我正在尝试做一个平面图。 x是11元素向量,y是300元素向量,z是300 * 11元素矩阵。
当我尝试像这样绘制它时:
surf(x y z)
表面图未显示。轴在那里,但没有曲面图。
但是,如果由于某种原因我对矩阵的一个子集进行了曲面绘制,如下所示:
surf(x y(1:31) z(1:31,:))
然后它开始工作,并显示出该图。
一旦将括号中的数字增加到32,它就会停止工作。如果我将范围从2:32更改为有效,则与数据无关,仅与矩阵大小无关。
这里发生了什么?我如何解决它?
P.S我会附加代码,但是它有点长和复杂,并导入.txt文件以加载到x和y向量中。
最佳答案
有时,它可以帮助更改Matlab的图形渲染器,该渲染器基本上是执行绘图的后端。选项是painters
,zbuffer
和OpenGL
。
由于它是一个图形属性,因此您可以将其应用于特定图形,例如:
set(gcf(), 'Renderer', 'painters')
或更新default figure properties(如果需要,可以将其放在user-specific startup.m中):
set(0, 'Renderer', 'painters')
同样,要获取当前的渲染器状态,请使用
get
而不是set
:get(gcf(), 'Renderer')
不同的渲染器具有不同的性能属性(例如
OpenGL
渲染器可以使用硬件加速(如果支持)),但也有不同的怪癖(以我的经验,使用getframe()进行帧捕获在使用某些渲染器时可以使用远程桌面登录,但不是全部)。虽然我不知道您遇到问题的确切原因,但这可能是这些怪异现象之一,因此请尝试更改渲染器。从Renderer property documentation:
关于Matlab:表面图不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11615921/