1个回答
展开全部
如何生成满足协方差矩阵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=E{z*z'},
我们假设 x=A*z,那么 Cx=E{x*x'}=E{(A*z)*(A*z)'}=A*E{z*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].数据量越少,越不能体现统计特性。
为了简单起见,假设X是零均值的.对于非零均值,设均值average=[a;b],只要外加一步x=x+average*ones(1,N)就OK了。
首先生成不相关的二维高斯随机变量z=randn(2,N);
这样生成的z,因为不相关,如果没有野值的话,其协方差Cz=[1 0;0,1];
如何从这样一个样本变换出满足所要求协方差矩阵的随机变量?
在零均值的条件下, Cz=E{z*z'},
我们假设 x=A*z,那么 Cx=E{x*x'}=E{(A*z)*(A*z)'}=A*E{z*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].数据量越少,越不能体现统计特性。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询