Matlab 冲浪功能赢得';二维高斯t图
我试图用surf函数在MATLAB中绘制一个简单的二维高斯函数,但我得到一个错误,即surf中的最后一个值必须是矩阵而不是向量。我不知道如何绘制函数图,因为我在搜索时发现的每个其他示例都将第三个值作为向量。我觉得冲浪功能让我完全偏离了底线。有什么想法吗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/(
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用正确的公式更新了。此外,如果你打算改变问题,那么在你最初的问题中增加一个问题,而不是完全取代对这个问题的担忧。谢谢你的帮助!