在matlab里怎么产生零均值协方差是已知的高斯信号呢?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在matlab里怎么产生零均值协方差是已知的高斯信号呢?相关的知识,希望对你有一定的参考价值。
参考技术A 如何生成满足协方差矩阵Cx=[4-1;-1
2]的二维高斯随机变量x的N个样本?
为了简单起见,假设X是零均值的.对于非零均值,设均值average=[a;b],只要外加一步x=x+average*ones(1,N)就OK了。
首先生成不相关的二维高斯随机变量z=randn(2,N);
这样生成的z,因为不相关,如果没有野值的话,其协方差Cz=[1
0;0,1];
如何从这样一个样本变换出满足所要求协方差矩阵的随机变量?
在零均值的条件下,
Cz=Ez*z',
我们假设
x=A*z,那么
Cx=Ex*x'=E(A*z)*(A*z)'=A*Ez*z'*A'=A*Cz*A'=A*A'
现在要解决的问题是,已知A*A'=Cx=[4
-1;-1
2],如何求A?显然这样的A有很多,我们为了方便计算,假设A为对称矩阵,即A=A',那么A的平方等于Cx,A等于Cx的平方根。
程序如下:
z=randn(2,N);
x=sqrtm(Cx)*z;
如果是非零均值,加上x=x+average*ones(1,N);
注意:
(1)程序中求平方根用的是sqrtm(Cx),而不是sqrt(Cx),前者是求满足A*A=Cx的A,后者是求满足A.*A=Cx的A。
(2)当N的值取太小时,Cz可能不等于[1
0;0
1].数据量越少,越不能体现统计特性。
求教大神,在matlab里怎么建立一个基于高斯近似的模型?
参考技术A randn可以产生均值为0方差为1 的标准正太分布模型。以上是关于在matlab里怎么产生零均值协方差是已知的高斯信号呢?的主要内容,如果未能解决你的问题,请参考以下文章
matlab 高斯滤波模板是怎么选取的?怎么取均值、方差的值对应出来的模板系数是整数呢?