[讨论] 仿真中加入噪声的方法(转)

linda_xia   2010-4-1 22:43 楼主
1、一般方法
       a、利用Matlab的函数awgn
      例如正弦波加入高斯白噪声,SNR=10dB。程序:t=[1:0.1:pi];s=sin(t);r=awgn(s,10,'measured');
       b、利用Matlab的函数randn
       程序:SNR=10;t=[1:0.1:pi];s=sin(t);s_power=(norm(s)^2)/length(s);n_power=s_power/(10^(SNR/10));noise=sqrt(n_power)*randn(length(s),1);r=s+noise;

2、问题
       a和b两段程序效果是一样的,b来自普罗克斯的书《现代通信系统使用matlab》(他的《数字通信》大大有名,该书可以从本站中下到)。问题在于s_power的计算和信号采样有关,极端的例子:sin(t)只采两点0和pi,这时计算信号功率为零,若采3点就不为零。当然采样点趋于无穷时才准确,即SNR的确为10dB,但实际仿真不可能做到。到底如何做呢?

3、一些想法
       上述问题是在自己仿真中发现的,也有一些想法来解决。比如数字信号用Eb/N0,先加噪后采样等,但是在多种信号系统比较时等情况下还会遇到很多问题。实际上这些问题往往被忽视,我看过一些文献如比较2psk和4psk,用SNR,明显的相同的SNR下,4psk的噪声大,同样的信道怎么会有不同的噪声,条件不一样比较的结果=?显然误用Eb/N0。
      
4、另外
        第一次发提问贴,感谢版主指正,也希望大家互相交流。特别是awgn还有许多控制参数,不同情况选用也不同,请大家谈谈。

回复评论 (1)

用Matlab仿真还是很好的,可惜都已经不会用了
不断地学习,才会有创新! 淘宝小店:手机、qq点卡、游戏点卡自动充值 http://shop63727265.taobao.com/
点赞  2010-4-2 08:19
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复