不化顽石 发表于 2007-9-4 21:46

关于生成标准白噪声的一点小问题

今天在这个上面栽了个小跟头,想想还是写了写发上来了,求砖。
这个问题实在比较肤浅,但我今天还是失误在这上面了,所以说仔细用心还是必须的。
------------------------------------
我今天想要做的,就是生成100个150*1的列向量,每个列向量都是一个标准白噪声样本。有两种生成方法:
1、      noise=wgn(150,100,1);
2、      noise1=randn(150,100);
从randn、wgn以及其后awgn的源码看,其实是wgn调用了randn,而awgn又调用了wgn。
虽然randn的help文件里面明确写着:The randn function generates arrays of random numbers whose elements are normally distributed with mean 0, variance σ2=1, and standard deviationσ=1.但实际情况并不理想。
考虑到150*1这个序列长度有些短,我实验了10000*1的序列,即:noise=wgn(10000,1,1); 及 noise1=randn(10000,1);
我做了个histogram的图,虽然分布形式很正态,但是mean(noise)及std(noise)都不是想像中的结果。wgn也就罢了,但是randn毕竟没有能做到它所承诺做到的事情。
所以一定要再进行下面一步:
noise=(noise-mean(noise))/std(noise);
这样之后就能得到:“mean(noise)= -3.8858e-017; 及 std(noise)=1.0000;” 这样比较漂亮的结果,用着也放心。

[ 本帖最后由 eight 于 2007-9-4 21:50 编辑 ]

eight 发表于 2007-9-4 21:53

鼓励一下,不过楼主可以看看我所写的关于“信噪比和添加噪声”的精华帖,里面也提及到这个问题,不过没有研究得这么深入。我当时也试过求 randn 后的均值,没有发现什么问题(当然了,长度不能太短),方差倒是没有测试过,呵呵

[ 本帖最后由 ChaChing 于 2010-7-5 23:59 编辑 ]

花如月 发表于 2007-9-4 22:05

http://forum.vibunion.com/forum/thread-49191-1-8.html
版面里的讨论不少的,这个帖子里也有。可以和eight的精华帖子比对着看。有些意见是很好的

[ 本帖最后由 花如月 于 2007-9-4 22:06 编辑 ]

eight 发表于 2007-9-4 22:09

对对对,我竟然忘记了花版主写的心得了。为了方便大家查找,该贴已经收录进置顶帖: matlab版区热门问题索引帖 中了

[ 本帖最后由 ChaChing 于 2010-7-6 00:01 编辑 ]

不化顽石 发表于 2007-9-4 22:22

谢谢上面两位,eight兄的精华贴,我仔细看过好几遍,不过漏掉了花兄的贴。
再去学习了。

花如月 发表于 2007-9-4 22:48

回复 #5 不化顽石 的帖子

我也只是发现了这个问题,没有什么好的解决办法。随机数在计算机内产生的方法,这方面的论文是很多的,多找些看看,我知道的也很有限

octopussheng 发表于 2007-9-5 08:43

用计算机生成随机数确实是一个比较讨厌的问题,编程实现也有一定的困难,楼主提出的这些想法还是很好的。
页: [1]
查看完整版本: 关于生成标准白噪声的一点小问题