{原创}关于利用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);
有个疑问:
利用randn产生的序列是高斯噪声,怎么保证他是白噪声呢?白噪声不就是不同时刻的两个变量的取值是不相关的吗?那么randn(1,2500)怎么保证取得的这2500的随机数是不相关的呢?