声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1683|回复: 6

[编程技巧] 关于生成标准白噪声的一点小问题

[复制链接]
发表于 2007-9-4 21:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
今天在这个上面栽了个小跟头,想想还是写了写发上来了,求砖。
这个问题实在比较肤浅,但我今天还是失误在这上面了,所以说仔细用心还是必须的。
------------------------------------
我今天想要做的,就是生成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 编辑 ]

评分

1

查看全部评分

回复
分享到:

使用道具 举报

发表于 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 编辑 ]
发表于 2007-9-4 22:09 | 显示全部楼层
对对对,我竟然忘记了花版主写的心得了。为了方便大家查找,该贴已经收录进置顶帖: matlab版区热门问题索引帖 中了

[ 本帖最后由 ChaChing 于 2010-7-6 00:01 编辑 ]
 楼主| 发表于 2007-9-4 22:22 | 显示全部楼层
谢谢上面两位,eight兄的精华贴,我仔细看过好几遍,不过漏掉了花兄的贴。
再去学习了。
发表于 2007-9-4 22:48 | 显示全部楼层

回复 #5 不化顽石 的帖子

我也只是发现了这个问题,没有什么好的解决办法。随机数在计算机内产生的方法,这方面的论文是很多的,多找些看看,我知道的也很有限
发表于 2007-9-5 08:43 | 显示全部楼层
用计算机生成随机数确实是一个比较讨厌的问题,编程实现也有一定的困难,楼主提出的这些想法还是很好的。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-25 21:45 , Processed in 0.072881 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表