加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

{原创}关于利用randn产生高斯白噪声的看法

(2014-07-01 23:24:17)
标签:

佛学

分类: matlab

网上一般按照下列代码利用函数randn产生高斯白噪声:

y=randn(1,2500); 
y=y-mean(y); 
y=y/std(y); 
a=0.0128; 
b=sqrt(0.9596); 
y=a+b*y;

就得到了 N ( 0.0128, 0.9596 ) 的高斯分布序列

我的看法:

首先randn是用来产生均值为0,方差为1的标准高斯分布的随机数,那么y=randn(1,2500);相当于是产生了2500个标准高斯分布的随机数,如果这2500个变量彼此是相互独立的,那么mean(y)应该等于0,std(y)应该等于1,N ( 0.0128, 0.9596 ) 可直接由y=a+b*y得到,为什么还要后面的代码呢?原来如果我们求mean(y)和std(y)会发现mean(y)并不是0,std(y)也并不是1,难道matlab在糊弄我们,从网上搜索原因,有种说法说是由于样本数取的太少,经过验证确实如此,但问题是我现在就需要生成2500个数,不需要那么多怎么办呢,这就是后面几条语句作用了。既然randn(1,2500)不是标准的那我们就自己手动把它化为标准的,y=y-mean(y); y=y/std(y); 就是这个作用,然后再利用y=a+b*y;就ok了!

有个疑问:

利用randn产生的序列是高斯噪声,怎么保证他是白噪声呢?白噪声不就是不同时刻的两个变量的取值是不相关的吗?那么randn(1,2500)怎么保证取得的这2500的随机数是不相关的呢?

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有