请生成DSB和SSB调制的matlab代码,并加入信噪比为10dB的高斯白噪声
时间: 2024-03-26 10:34:06 浏览: 20
好的,以下是生成DSB和SSB调制的MATLAB代码,并加入信噪比为10dB的高斯白噪声:
```matlab
% 生成信号
fs = 1000; % 采样率
t = 0:1/fs:1-1/fs; % 时间轴
fc = 100; % 载波频率
fm = 10; % 信号频率
Am = 1; % 信号幅度
Ac = 1; % 载波幅度
m = Am * cos(2 * pi * fm * t); % 原始信号
c = Ac * cos(2 * pi * fc * t); % 载波信号
% DSB调制
dsb = m .* c; % DSB调制信号
% SSB调制
[b, a] = butter(5, [fc-fm, fc+fm]/(fs/2), 'bandpass'); % 带通滤波器
upper = filtfilt(b, a, m); % 上变频
ssb_upper = upper .* cos(2 * pi * fc * t);
[b, a] = butter(5, [-fc-fm, -fc+fm]/(fs/2), 'bandpass'); % 带通滤波器
lower = filtfilt(b, a, m); % 下变频
ssb_lower = lower .* sin(2 * pi * fc * t);
% SSB调制信号
ssb = ssb_upper - ssb_lower;
% 加入高斯白噪声
snr_db = 10; % 信噪比为10dB
snr = 10^(snr_db/10);
P_signal = sum(dsb.^2) / length(dsb);
P_noise = P_signal / snr;
noise = randn(size(dsb)) * sqrt(P_noise);
dsb_noise = dsb + noise;
ssb_noise = ssb + noise;
% 绘图
figure;
subplot(3,1,1);
plot(t, m);
title('原始信号');
subplot(3,1,2);
plot(t, dsb);
hold on;
plot(t, dsb_noise);
legend('DSB调制信号', '加入噪声的DSB调制信号');
title(['信噪比:', num2str(snr_db), 'dB']);
subplot(3,1,3);
plot(t, ssb);
hold on;
plot(t, ssb_noise);
legend('SSB调制信号', '加入噪声的SSB调制信号');
title(['信噪比:', num2str(snr_db), 'dB']);
```
希望对您有所帮助!