使用 randn 函数生成均值为 0,方差为 1 的高斯白噪声信号,然后根据信噪比进行缩放。假设噪声信号的长度为 N,信噪比为 SNR(单位为 dB),则信号的功率为 P = 1/N * sum(x.^2),其中 x 为噪声信号。根据信噪比的定义,信号的功率与噪声的功率之比为 10^(SNR/10),因此噪声的功率为 P_noise = P / (10^(SNR/10))。最后,根据噪声的功率,可以通过缩放噪声信号的幅度来得到信噪比为 20dB 的噪声信号。以下是一个示例代码:matlabN = 1000; % 噪声信号的长度SNR = 20; % 信噪比% 生成均值为 0,方差为 1 的高斯白噪声信号noise = randn(N, 1);% 计算噪声信号的功率P = 1/N * sum(noise.^2);% 计算噪声的功率P_noise = P / (10^(SNR/10));% 缩放噪声信号的幅度scaled_noise = sqrt(P_noise) * noise;在上述代码中,scaled_noise 即为信噪比为 20dB 的噪声信号。

MATLAB 生成信噪比为 20dB 的噪声信号 - 代码示例与解释

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

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