尝试绘制z=x+;时图形不正确;用MATLAB编程
我试图在MATLAB中绘制3D曲面,我使用了尝试绘制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应用于组合的详
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
值以获得所需的平面