2013-11-24 20 views
7

私は次のように定義された変量ガウスを持っている:MATLABでのMVNの多変量正規分布の等高線をプロットしますか?

I=[1 0;0 1]; 
mu=[0,0]; 
sigma=0.5*I; 
beta = mvnrnd(mu,sigma,100); %100x2 matrix where each column vector is a variable. 

は、今私は上記の行列のPDFの輪郭をプロットしたいです。私がしたこと:

Z = mvnpdf(beta,mu,sigma); %100x1 pdf matrix 

ここで、二変量ガウス分布の等高線をプロットしたいと思います。私はコマンド輪郭を使うべきであることを知っているが、これはZが正方行列であることを必要とする。どのように私はこれを解決するのですか?私は非常に混乱しており、二変量ガウスの輪郭をどのようにプロットするのかはわかりません!!すべてのヘルプは大幅に..高く評価され

は、あなたがあなたのxy軸を定義し、二つの行列の形で、X、Yの値のすべての組み合わせを生成するmeshgrid(またはndgrid)を使用する必要があり、あなたに

答えて

14

ありがとうXおよびY。その後、contour(等高線図)を使ってXY、およびプロットZXの関数として、YためZ値(あなたのガウスpdf)を計算し、またはおそらくsurf(3Dプロット)。

mu = [0,0]; %// data 
sigma = [.5 0; 0 .5]; %// data 
x = -5:.1:5; %// x axis 
y = -4:.1:4; %// y axis 

[X Y] = meshgrid(x,y); %// all combinations of x, y 
Z = mvnpdf([X(:) Y(:)],mu,sigma); %// compute Gaussian pdf 
Z = reshape(Z,size(X)); %// put into same size as X, Y 
%// contour(X,Y,Z), axis equal %// contour plot; set same scale for x and y... 
surf(X,Y,Z) %// ... or 3D plot 

Graph obtained with <code>contour(X,Y,Z), axis equal</code> Graph obtained with <code>surf(X,Y,Z)</code>

+1

そんなには、このコードはオクターブで完璧にも作品 – Evan

+1

完全に働いたありがとう、統計パッケージは 'pkgの負荷statistics'ロードされていることを提供:) –