Matlab 冲浪功能赢得';二维高斯t图

Matlab 冲浪功能赢得';二维高斯t图,matlab,matlab-figure,Matlab,Matlab Figure,我试图用surf函数在MATLAB中绘制一个简单的二维高斯函数,但我得到一个错误,即surf中的最后一个值必须是矩阵而不是向量。我不知道如何绘制函数图,因为我在搜索时发现的每个其他示例都将第三个值作为向量。我觉得冲浪功能让我完全偏离了底线。有什么想法吗 amp = 10; x0 = 0; y0 = 0; sigmaX = 10 sigmaY = 10 X = 1:1:100; Y = 1:1:100; Z = amp*exp(-(X-x0).^2/(2*sigmaX^2)+(Y-y0).^2/(

我试图用surf函数在MATLAB中绘制一个简单的二维高斯函数,但我得到一个错误,即surf中的最后一个值必须是矩阵而不是向量。我不知道如何绘制函数图,因为我在搜索时发现的每个其他示例都将第三个值作为向量。我觉得冲浪功能让我完全偏离了底线。有什么想法吗

amp = 10;
x0 = 0;
y0 = 0;
sigmaX = 10
sigmaY = 10
X = 1:1:100;
Y = 1:1:100;
Z = amp*exp(-(X-x0).^2/(2*sigmaX^2)+(Y-y0).^2/(2*sigmaY^2));
disp(size(Z))
surf(X, Y, Z);
编辑

当我用@Suever的答案绘制这个图时,我得到的东西看起来一点都不像高斯分布


您已经使用
X
Y
定义了一个二维域,您希望在该域上计算高斯分布。如果希望
Z
成为
X
Y
的函数,则需要为
X
Y
的所有排列定义
Z
。如果不提供
Z
值的矩阵,则MATLAB不知道如何在您提供的
X
Y
范围上创建曲面

您可以使用
meshgrid
创建
X
Y
的所有排列,然后在整个域上计算
Z
。然后,您将能够使用
surf
显示结果

amp = 10; x0 = 50; y0 = 50; sigmaX = 10; sigmaY = 10;

[X, Y] = meshgrid(1:100, 1:100);

% Z as you had it written (see correct version below)
Z = amp*exp(-(X-x0).^2./(2*sigmaX^2)+(Y-y0).^2./(2*sigmaY^2));

surf(X, Y, Z);
更新

你的二维高斯方程是错误的。
-
符号应位于两个组件的加法之外。按照您编写的方式,您否定了X分量,然后将其添加到Y分量

Z = amp*exp(-((X-x0).^2./(2*sigmaX^2)+(Y-y0).^2./(2*sigmaY^2)));

您已经使用
X
Y
定义了一个二维域,您希望在该域上计算高斯分布。如果希望
Z
成为
X
Y
的函数,则需要为
X
Y
的所有排列定义
Z
。如果不提供
Z
值的矩阵,则MATLAB不知道如何在您提供的
X
Y
范围上创建曲面

您可以使用
meshgrid
创建
X
Y
的所有排列,然后在整个域上计算
Z
。然后,您将能够使用
surf
显示结果

amp = 10; x0 = 50; y0 = 50; sigmaX = 10; sigmaY = 10;

[X, Y] = meshgrid(1:100, 1:100);

% Z as you had it written (see correct version below)
Z = amp*exp(-(X-x0).^2./(2*sigmaX^2)+(Y-y0).^2./(2*sigmaY^2));

surf(X, Y, Z);
更新

你的二维高斯方程是错误的。
-
符号应位于两个组件的加法之外。按照您编写的方式,您否定了X分量,然后将其添加到Y分量

Z = amp*exp(-((X-x0).^2./(2*sigmaX^2)+(Y-y0).^2./(2*sigmaY^2)));

它开始工作了!但现在我的图形看起来一点也不像二维高斯(OP中的图像)。有什么想法吗?@ChristianGonzalez用正确的公式更新了。此外,如果你打算改变问题,那么在你最初的问题中增加一个问题,而不是完全取代对这个问题的担忧。谢谢你的帮助!开始工作了!但现在我的图形看起来一点也不像二维高斯(OP中的图像)。有什么想法吗?@ChristianGonzalez用正确的公式更新了。此外,如果你打算改变问题,那么在你最初的问题中增加一个问题,而不是完全取代对这个问题的担忧。谢谢你的帮助!