用matlab实现正弦信号f=10MHz的图像并添加高斯白噪声使信噪比为10dB,0dB,-10dB并在一幅图中显示
时间: 2023-07-16 22:13:43 浏览: 96
首先生成正弦信号:
```matlab
t = 0:1e-9:1e-6; % 时间范围
f = 10e6; % 信号频率
A = 1; % 信号幅度
x = A*sin(2*pi*f*t); % 生成正弦信号
```
然后添加高斯白噪声:
```matlab
SNR = [10, 0, -10]; % 信噪比
for i = 1:length(SNR)
noise_power = A^2/10^(SNR(i)/10); % 计算噪声功率
noise = sqrt(noise_power)*randn(size(t)); % 生成高斯白噪声
x_noisy{i} = x + noise; % 添加噪声
end
```
最后将三个信噪比的信号在一幅图中显示:
```matlab
figure;
plot(t, x_noisy{1}, 'r', t, x_noisy{2}, 'g', t, x_noisy{3}, 'b');
xlabel('时间');
ylabel('幅度');
title('带有不同信噪比的正弦信号');
legend('10dB', '0dB', '-10dB');
```
完整代码如下:
```matlab
t = 0:1e-9:1e-6; % 时间范围
f = 10e6; % 信号频率
A = 1; % 信号幅度
x = A*sin(2*pi*f*t); % 生成正弦信号
SNR = [10, 0, -10]; % 信噪比
for i = 1:length(SNR)
noise_power = A^2/10^(SNR(i)/10); % 计算噪声功率
noise = sqrt(noise_power)*randn(size(t)); % 生成高斯白噪声
x_noisy{i} = x + noise; % 添加噪声
end
figure;
plot(t, x_noisy{1}, 'r', t, x_noisy{2}, 'g', t, x_noisy{3}, 'b');
xlabel('时间');
ylabel('幅度');
title('带有不同信噪比的正弦信号');
legend('10dB', '0dB', '-10dB');
```
阅读全文