Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 使用Meshgrid和Surfc绘制三维函数_Matlab_Plot_3d - Fatal编程技术网

Matlab 使用Meshgrid和Surfc绘制三维函数

Matlab 使用Meshgrid和Surfc绘制三维函数,matlab,plot,3d,Matlab,Plot,3d,我知道这似乎是一个基本问题,而且很可能是。我在学习如何使用meshgrid和surfc绘制此函数时遇到困难。我一直得到这样一个错误,即曲面Z必须包含多行或多列。为什么我会犯这个错误?我要做的是: x = 0:.01:1; y = 0:.01:1; f = @(x, y) sin(4*pi.*x).*sin(y).*(1-y) + (1./sqrt(1+10.*(x.^2)+ 100.*(y-0.5).^2)) Z = f(x, y); [X, Y] = meshgrid(x, y) surf

我知道这似乎是一个基本问题,而且很可能是。我在学习如何使用meshgrid和surfc绘制此函数时遇到困难。我一直得到这样一个错误,即曲面Z必须包含多行或多列。为什么我会犯这个错误?我要做的是:

x = 0:.01:1;
y = 0:.01:1;

f = @(x, y) sin(4*pi.*x).*sin(y).*(1-y) + (1./sqrt(1+10.*(x.^2)+ 100.*(y-0.5).^2))
Z = f(x, y);

[X, Y] = meshgrid(x, y)
surfc(X, Y, Z)
明白了:

x = 0:.01:1;
y = 0:.01:1;

f = @(x, y) sin(4*pi.*x).*sin(y).*(1-y) + (1./sqrt(1+10.*(x.^2)+ 100.*(y-0.5).^2))


[X, Y] = meshgrid(x, y)
Z = f(X, Y);

size(x)
size(Y)
size(Z)
surfc(X, Y, Z)

嗯,听起来好像surfc在抱怨Z的大小。使用大小检查X、Y和Z的大小。他们是你所期望的吗?这和帮助中对Z的描述相符吗?X和Y都是101乘101。这些是有意义的b/c我使用的是网格网格。然而,Z是1乘101。这是没有意义的,因为假设Z是一个在101×101点处计算的3d曲面。如果这是正确的,我如何找到一种方法让Z变成101乘101?仔细看看你传递给f调用的x和y。它们是否也是您希望传递到那里的内容,特别是关于meshgrid调用的内容?Matlab区分大小写。好的,谢谢,明白了。它应该是fX,Y,并且直线Z=fX,Y应该移动到下一行的下方。