當前位置:股票大全官網 - 股票行情 - 如何在matlab中生成已知零均值協方差的高斯信號?

如何在matlab中生成已知零均值協方差的高斯信號?

如何生成協方差矩陣Cx =[4-1;-1 ^ 2]的二維高斯隨機變量x的n個樣本?

為簡單起見,假設x為零均值。對於非零均值,設mean average =[a;B],只要加壹步x = x+平均*個(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+均值*個(1,n);

註意:

在(1)程序中,sqrtm(Cx)用於求平方根,而不是sqrt(Cx)。前者是求滿足A*A=Cx的A,後者是求滿足A.*A=Cx的A。

(2)當n的值太小時,Cz可能不等於[1 0;0 1].數據越少,越不能反映統計特征。