use*_*465 4 matlab plot surface
我试图在MATLAB中绘制3D曲面,并且我使用了meshgrid
,类似于MATLAB教程在这里所说的:http://www.mathworks.com/help/matlab/ref/meshgrid.html
我写了一个非常简单的三行脚本,我认为它会产生表面z = x + y,它如下:
[x , y] = meshgrid( linspace( 0 , 10 , 10 ) , linspace( 0 , 10 , 10 ) );
z = x + y;
surf( [ x , y , z] );
Run Code Online (Sandbox Code Playgroud)
根据我的理解,第1行产生(x,y)坐标的所有组合,从0到10均匀间隔.然后第2行将公式z = x + y
应用于该详尽的组合列表.然后第3行只绘制所有(x, y, z)
点.
但我得到以下"东西"作为输出:
我很确定上图中的图形不是z = x + y
,我不知道为什么没有两个轴上升到最大值10.
尽管如此,我发现脚本太简单了,看不出有什么问题.任何人都可以指出我忽略了什么吗?谢谢.
生成3D坐标的语法是正确的.您的来电surf
不正确.您实际需要做的是分开x
,y
并z
分成三个独立的参数:
surf(x,y,z);
Run Code Online (Sandbox Code Playgroud)
当你这样做时,你会得到这个表面.请注意,生成的图形是使用MATLAB R2013a,因此显示的颜色图不是R2014b及更高版本中可用的parula颜色图,但表面将是您正在寻找的正确颜色:
...现在为什么你需要分开你的x
,y
并z
指出创造表面?究其原因,就是因为这样[x,y,z]
,你是手段串联的x
,y
并z
协调到一个单一的2D信号,因此发生的事情是,你正在创建一个2D信号是10×30调用surf
这个单一的2D阵列自动假定x
值范围从1到30,y
值范围从1到10,这些是跨越图的轴的值的2D网格以及显示surf
的z
值,其中z
值来自先前创建的连接矩阵.如果你看一下你生成的图,你可以看到x
值从1到30,这显然不是你想要的.
你需要单独的x
,y
和z
值,以达到理想的平面.