我在两种不同的情况下使用相同的 SNR 产生噪声,一次使用内置命令 AWGN 命令,第二次使用具有正确缩放比例的 randn 函数,但是在每种情况下我得到不同的噪声功率。
以下是使用不同技术生成噪声的脚本。谁能帮助我为什么我没有得到正确的结果?
方法一
A=[1-1i 1+1i 2-1i 2+1i 3+1i 3-3i]
Norm=sum(abs(A).^2)/length(A);
flipud(A);
snrdb=0;
snrlin=10^((snrdb)/10);
Noise=sqrt(Norm/(2*snrlin))*(randn(size(A,1),size(A,2))+1i*randn(size(A,1),size(A,2)));
方法二
B=awgn(A,snrdb,'measured');
Noise2=B-A;
结果如下:
>> sum(abs(C).^2)/length(C)
ans =
3.6551
>> sum(abs(Noise).^2)/length(Noise)
ans =
6.4898
信号功率为
>> sum(abs(A).^2)/length(A)
ans =7
这似乎 randn 在估计信号的功率和 awgn 这种情况下做得更好,但在不同的情况下,结果是不同的,可能会得到不同的结果。谁能告诉我如何更改使用内置命令和 randn 产生的噪声的代码给我相同的结果。