2013-11-24 46 views
7

我有我定義如下二元高斯:在MATLAB中繪製給定MVN的多元正態PDF的輪廓?

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是一個方形矩陣。我該如何解決這個問題?我很困惑,不知道如何繪製雙變量高斯的輪廓!任何幫助,不勝感激..

謝謝

回答

14

您需要定義xy軸和使用meshgrid(或ndgrid)產生的X,Y值的所有組合中,兩個矩陣X形式和Y。然後,計算Z值(你高斯PDF)對於那些XY,和情節ZX功能,Y使用contour(等高線圖),或者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' :) –