Matlab实现:为正弦波添加指定信噪比的噪声

本文介绍如何使用Matlab为一个正弦连续波添加指定信噪比 (SNR) 的噪声。

**1. 定义正弦波参数:**matlabA = 1; % 振幅f0 = 20e6; % 频率fs = 4*f0; % 采样频率t = 1:1000; % 时间向量

**2. 生成正弦波:**matlabs(t) = A * cos(2pif0/fs*t + pi/2);

3. 添加噪声:

这里我们使用 awgn 函数添加高斯白噪声。awgn 函数的语法如下:matlabnoisy_signal = awgn(signal, SNR, 'measured');

其中:

  • signal: 输入信号* SNR: 所需的信噪比 (dB)* 'measured': 指定使用信号的实际功率来计算噪声功率

例如,要添加-6dB的噪声,可以使用以下代码:matlabSNR = -6; noisy_signal = awgn(s(t), SNR, 'measured');

**4. 绘制时域和频域波形:**matlab% 时域波形figure(1);subplot(2,1,1);plot(t, noisy_signal);axis([0 1000 -1.5 1.5]);xlabel('时间 (s)');ylabel('幅度');title('添加噪声后的正弦波 (时域)');

% 频域波形x = linspace(-fs/2, fs/2, 1000);h = fftshift(abs(fft(noisy_signal)));subplot(2,1,2);plot(x, h);xlabel('频率 (Hz)');ylabel('幅度');title('添加噪声后的正弦波 (频域)');

**完整代码:**matlabA = 1;f0 = 20e6;fs = 4*f0;t = 1:1000;

% 生成正弦波s(t) = A * cos(2pif0/fs*t + pi/2);

% 添加噪声SNR = -6; noisy_signal = awgn(s(t), SNR, 'measured');

% 时域波形figure(1);subplot(2,1,1);plot(t, noisy_signal);axis([0 1000 -1.5 1.5]);xlabel('时间 (s)');ylabel('幅度');title('添加噪声后的正弦波 (时域)');

% 频域波形x = linspace(-fs/2, fs/2, 1000);h = fftshift(abs(fft(noisy_signal)));subplot(2,1,2);plot(x, h);xlabel('频率 (Hz)');ylabel('幅度');title('添加噪声后的正弦波 (频域)');

通过调整 SNR 的值,您可以控制添加到正弦波中的噪声水平。 这段代码可以帮助您理解如何在 Matlab 中为信号添加指定信噪比的噪声, 这在信号处理和通信系统仿真中是非常常见的操作。

Matlab实现:为正弦波添加指定信噪比的噪声

原文地址: http://www.cveoy.top/t/topic/bJ2j 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录