Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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
尝试绘制z=x+;时图形不正确;用MATLAB编程_Matlab_Plot_Surface - Fatal编程技术网

尝试绘制z=x+;时图形不正确;用MATLAB编程

尝试绘制z=x+;时图形不正确;用MATLAB编程,matlab,plot,surface,Matlab,Plot,Surface,我试图在MATLAB中绘制3D曲面,我使用了meshgrid,类似于MATLAB教程中所述: 我写了一个非常简单的三行脚本,我相信它会生成曲面z=x+y,如下所示: [x , y] = meshgrid( linspace( 0 , 10 , 10 ) , linspace( 0 , 10 , 10 ) ); z = x + y; surf( [ x , y , z] ); 据我所知,第1行生成(x,y)坐标的所有组合,这些坐标均匀分布在0到10之间。然后第2行只将公式z=x+y应用于组合的详

我试图在MATLAB中绘制3D曲面,我使用了
meshgrid
,类似于MATLAB教程中所述:

我写了一个非常简单的三行脚本,我相信它会生成曲面z=x+y,如下所示:

[x , y] = meshgrid( linspace( 0 , 10 , 10 ) , linspace( 0 , 10 , 10 ) );
z = x + y;
surf( [ x , y , z] );
据我所知,第1行生成(x,y)坐标的所有组合,这些坐标均匀分布在0到10之间。然后第2行只将公式
z=x+y
应用于组合的详尽列表。然后第3行只绘制所有
(x,y,z)

但我得到了以下“东西”作为输出:

我很确定上图中的图形不是
z=x+y
,我也不知道为什么没有两个轴上升到最大值10


不过,我觉得脚本太简单了,看不出有什么问题。有人能指出我忽略了什么吗?谢谢。

生成三维坐标的语法是正确的。您对
surf
的呼叫不正确。实际需要做的是将
x
y
z
分为三个单独的参数:

surf(x,y,z);
当你这样做的时候,你得到了这个曲面。请注意,生成的图形是使用MATLAB R2013a生成的,因此显示的颜色贴图不是R2014b及以上版本可用的parula颜色贴图,但曲面将是您要查找的正确曲面:

。。。现在,为什么需要分离
x
y
z
点来创建曲面?原因是因为执行
[x,y,z]
意味着将
x
y
z
坐标连接成一个单个2D信号,因此所发生的是创建一个10 x 30的2D信号。使用单个二维数组调用
surf
时,会自动假定
x
值的范围为1到30,
y
值的范围为1到10,这些是跨
surf
绘图轴的二维值网格,与所示的
z
值一起,其中
z
值源自先前创建的串联矩阵。如果查看生成的绘图,可以看到
x
值的范围是1到30,这显然不是您想要的

您需要分离
x
y
z
值以获得所需的平面