要在 MATLAB 中绘制幅度调制(AM)和双边带抑制载波(DSB-SC)的功率谱密度(PSD)图,以及基带信号和解调信号的时域和频域图,可以按照以下步骤操作:
- 生成基带信号:选择一个简单的信号,如正弦波。
- 生成载波信号:用于调制的高频正弦波。
- 生成 AM 和 DSB-SC 信号:使用基带信号和载波信号。
- 解调信号:恢复原始基带信号。
- 计算并绘制功率谱密度:使用 MATLAB 的
pwelch
函数。 - 绘制时域和频域图:使用
fft
函数计算频域表示。
相关matlab代码:
% 参数设置
Fs = 1000; % 采样频率
t = 0:1/Fs:1; % 时间向量
fc = 100; % 载波频率
fm = 5; % 消息信号频率
% 基带信号(消息信号)
mt = cos(2*pi*fm*t);
% 载波信号
ct = cos(2*pi*fc*t);
% AM 调制
AM = (1 + mt) .* ct;
% DSB-SC 调制
DSBSC = mt .* ct;
% 解调 AM 信号
demod_AM = AM .* ct;
[b, a] = butter(4, 0.1); % 低通滤波器
demod_AM = filtfilt(b, a, demod_AM);
% 计算功率谱密度
pwelch(AM,[],[],[],Fs);
title('AM Signal PSD');
figure;
pwelch(DSBSC,[],[],[],Fs);
title('DSB-SC Signal PSD');
% 计算频域
Mf = abs(fftshift(fft(mt)));
f = (-Fs/2:Fs/length(t):Fs/2 - Fs/length(t));
% 绘制基带信号的时域和频域图
figure;
subplot(2,1,1);
plot(t, mt);
title('Baseband Signal in Time Domain');
xlabel('Time (s)');
ylabel('Amplitude');
subplot(2,1,2);
plot(f, Mf);
title('Baseband Signal in Frequency Domain');
xlabel('Frequency (Hz)');
ylabel('Magnitude');
% 绘制解调 AM 信号的时域和频域图
demod_AM_Freq = abs(fftshift(fft(demod_AM)));
figure;
subplot(2,1,1);
plot(t, demod_AM);
title('Demodulated AM Signal in Time Domain');
xlabel('Time (s)');
ylabel('Amplitude');
subplot(2,1,2);
plot(f, demod_AM_Freq);
title('Demodulated AM Signal in Frequency Domain');
xlabel('Frequency (Hz)');
ylabel('Magnitude');
仿真结果: