【问题标题】:Plot a contour of multivariate normal PDF of a given MVN in MATLAB?在 MATLAB 中绘制给定 MVN 的多元正态 PDF 的轮廓?
【发布时间】:2013-12-08 19:43:51
【问题描述】:

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

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

现在我想绘制二元高斯 beta 的等高线。我知道我应该使用命令轮廓,但这个要求 Z 是一个方阵。我该如何解决?我很困惑,不知道如何绘制双变量高斯的轮廓!!非常感谢任何帮助..

谢谢

【问题讨论】:

    标签: matlab contour gaussian normal-distribution


    【解决方案1】:

    您需要定义xy 轴并使用meshgrid(或ndgrid)以两个矩阵XY 的形式生成x、y 值的所有组合.然后,您计算 XYZ 值(您的高斯 pdf),并使用 contour(等高线图)绘制 Z 作为 XY 的函数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
    

    【讨论】:

    • 此代码在 Octave 中也能完美运行,前提是已加载统计包 pkg load statistics :)
    猜你喜欢
    • 2016-02-15
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-25
    • 1970-01-01
    相关资源
    最近更新 更多