在MATLAB中绘制给定MVN的多元法线PDF的轮廓?

Eva*_*van 9 matlab normal-distribution gaussian contour

我有一个双变量高斯我定义如下:

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.
Run Code Online (Sandbox Code Playgroud)

现在我想绘制上述矩阵的pdf轮廓.我做了什么:

Z = mvnpdf(beta,mu,sigma);  %100x1 pdf matrix
Run Code Online (Sandbox Code Playgroud)

现在我想绘制双变量高斯beta的轮廓.我知道我应该使用命令轮廓,但这个要求Z是一个方阵.我该如何解决这个问题?我很困惑,不知道如何绘制双变量高斯的轮廓!! 任何帮助是极大的赞赏..

谢谢

Lui*_*ndo 17

您需要定义x,y轴和使用meshgrid(或ndgrid)产生的X,Y值的所有组合,在两个矩阵的形式XY.然后,计算出Z这些值(你高斯PDF)XY,并绘制Z成函数X,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
Run Code Online (Sandbox Code Playgroud)

使用<code>轮廓(X,Y,Z),轴等于</ code>获得的图形 使用<code> surf(X,Y,Z)</ code>获得的图表