编写MATLAB程序Q3_2,一矩形脉冲 ,载波信号 ,试用傅立叶变换的数值解法实现调幅信号 ,并绘制出 、 及它们各自的频谱。
时间: 2023-11-24 16:05:59 浏览: 87
下面是一个MATLAB程序,可以实现矩形脉冲调幅信号的生成和傅立叶变换的数值解法,并绘制出原始信号、调幅信号及它们各自的频谱:
```matlab
% 设置参数
fc = 100; % 载波频率
fs = 1000; % 采样频率
T = 1/fc; % 载波周期
N = 1024; % 采样点数
% 生成时间序列
t = linspace(0, (N-1)/fs, N);
% 生成矩形脉冲信号
fm = 10; % 调制信号频率
m = square(2*pi*fm*t); % 矩形脉冲调制信号
% 生成载波信号
c = sin(2*pi*fc*t); % 载波信号
% 生成调幅信号
kf = 1; % 调频灵敏度
Ac = 1; % 载波幅度
Am = 0.5; % 调制信号幅度
s = (Ac + Am*m).*c; % 调幅信号
% 进行傅立叶变换
M = fft(m);
C = fft(c);
S = fft(s);
% 计算频率序列
f = (0:(N-1)) * fs/N;
% 绘制时域波形图和频域幅度图
figure;
subplot(3,2,1);
plot(t, m);
title('Rectangular Pulse Modulating Signal');
xlabel('Time (s)');
ylabel('Amplitude');
grid on;
subplot(3,2,2);
plot(f(1:N/2), 2*abs(M(1:N/2))/N);
title('Spectrum of Rectangular Pulse Modulating Signal');
xlabel('Frequency (Hz)');
ylabel('Magnitude');
grid on;
subplot(3,2,3);
plot(t, c);
title('Carrier Signal');
xlabel('Time (s)');
ylabel('Amplitude');
grid on;
subplot(3,2,4);
plot(f(1:N/2), 2*abs(C(1:N/2))/N);
title('Spectrum of Carrier Signal');
xlabel('Frequency (Hz)');
ylabel('Magnitude');
grid on;
subplot(3,2,5);
plot(t, s);
title('AM Signal with Rectangular Pulse Modulation');
xlabel('Time (s)');
ylabel('Amplitude');
grid on;
subplot(3,2,6);
plot(f(1:N/2), 2*abs(S(1:N/2))/N);
title('Spectrum of AM Signal with Rectangular Pulse Modulation');
xlabel('Frequency (Hz)');
ylabel('Magnitude');
grid on;
```
程序中,首先设置了载波频率fc、采样频率fs、采样点数N等参数。然后根据这些参数生成时间序列t。
接着,根据矩形脉冲调制信号的表达式,生成矩形脉冲调制信号m。使用正弦函数生成载波信号c。根据调幅信号的表达式生成调幅信号s。
最后,使用fft函数进行傅立叶变换,得到频域信号M、C、S。根据频率序列计算幅频特性曲线并绘制。同时,绘制时域波形图和频域幅度图。
阅读全文