在MATLAB中绘制给定MVN的多元正态PDF的轮廓?

在MATLAB中绘制给定MVN的多元正态PDF的轮廓?,matlab,contour,gaussian,normal-distribution,Matlab,Contour,Gaussian,Normal Distribution,我有一个二元高斯分布,定义如下: 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是一个

我有一个二元高斯分布,定义如下:

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是一个方阵。我如何解决这个问题?我很困惑,不知道如何绘制二元高斯分布的轮廓!!非常感谢您的帮助


谢谢

您需要定义
x
y
轴,并使用
meshgrid
(或
ndgrid
)以两个矩阵
x
y
的形式生成x,y值的所有组合。然后计算
X
Y
Z
值(高斯pdf),并使用
等高线
(等高线图)或
surf
(3D图)绘制
Z
,作为
X
Y
的函数

等高线(X、Y、Z),轴相等
surf(X,Y,Z)“>

如果加载了统计数据包,则此代码在八度音程中也能完美工作。
pkg load statistics
:)
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