请生成DSB和SSB调制的matlab代码,并加入信噪比为10dB的高斯白噪声
时间: 2024-03-26 17:34:13 浏览: 95
用MATLAB产生高斯白噪声
4星 · 用户满意度95%
好的,以下是DSB和SSB调制的matlab代码,并加入信噪比为10dB的高斯白噪声:
DSB调制代码:
```matlab
% 设置信号的频率和时间
f = 100; % 信号频率为100Hz
t = 0:0.001:1; % 时间为0到1秒,采样率为1000Hz
% 生成信号
x = 2*sin(2*pi*f*t); % 正弦波信号
% 设置载波的频率和幅度
fc = 1000; % 载波频率为1kHz
Ac = 5; % 载波幅度为5V
% DSB调制
y = Ac*(1 + x).*cos(2*pi*fc*t);
% 加入高斯白噪声
SNR = 10; % 信噪比为10dB
Psignal = mean(y.^2); % 信号功率
Pnoise = Psignal/10^(SNR/10); % 噪声功率
noise = sqrt(Pnoise)*randn(size(y)); % 生成符合高斯分布的噪声
y_noise = y + noise; % 加入噪声
% 绘图
figure;
plot(t, y_noise, 'r');
hold on;
plot(t, y, 'b');
xlabel('Time (s)');
ylabel('Amplitude (V)');
title('DSB Modulation with Noise');
legend('With Noise', 'Without Noise');
```
SSB调制代码:
```matlab
% 设置信号的频率和时间
f = 100; % 信号频率为100Hz
t = 0:0.001:1; % 时间为0到1秒,采样率为1000Hz
% 生成信号
x = 2*sin(2*pi*f*t); % 正弦波信号
% 设置载波的频率和幅度
fc = 1000; % 载波频率为1kHz
Ac = 5; % 载波幅度为5V
% SSB调制
y_upper = Ac*x.*cos(2*pi*fc*t) - Ac*sin(2*pi*fc*t);
y_lower = Ac*x.*cos(2*pi*fc*t) + Ac*sin(2*pi*fc*t);
% 加上两路信号,得到SSB信号
y = y_upper + y_lower;
% 加入高斯白噪声
SNR = 10; % 信噪比为10dB
Psignal = mean(y.^2); % 信号功率
Pnoise = Psignal/10^(SNR/10); % 噪声功率
noise = sqrt(Pnoise)*randn(size(y)); % 生成符合高斯分布的噪声
y_noise = y + noise; % 加入噪声
% 绘图
figure;
plot(t, y_noise, 'r');
hold on;
plot(t, y, 'b');
xlabel('Time (s)');
ylabel('Amplitude (V)');
title('SSB Modulation with Noise');
legend('With Noise', 'Without Noise');
```
希望这些代码可以帮到你!
阅读全文