matlab 给矩阵加30dB噪声的程序
时间: 2023-11-02 19:14:15 浏览: 73
用matlab编的噪声程序
4星 · 用户满意度95%
假设要给矩阵 A 加 30dB 噪声,可以使用以下 MATLAB 代码:
```matlab
% 生成随机噪声矩阵
noise = randn(size(A));
% 计算 A 的功率
p_A = sum(abs(A(:)).^2) / numel(A);
% 计算噪声的功率
p_noise = sum(abs(noise(:)).^2) / numel(noise);
% 计算信噪比(SNR)
snr = 30; % 30dB
snr_linear = 10^(snr/10);
p_signal = p_A / snr_linear;
% 缩放噪声的功率以达到信噪比要求
scale_factor = sqrt(p_signal / p_noise);
noise = scale_factor * noise;
% 加噪声
A_noisy = A + noise;
```
这段代码首先生成一个与矩阵 A 相同大小的随机噪声矩阵,然后计算 A 和噪声的功率。接下来,根据要求的信噪比计算信号的功率,并缩放噪声的功率以达到信噪比要求。最后,将缩放后的噪声加到原始矩阵 A 中,得到加噪声后的矩阵 A_noisy。
阅读全文