我正在尝试做一个平面图。 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的图形渲染器,该渲染器基本上是执行绘图的后端。选项是painterszbufferOpenGL

由于它是一个图形属性,因此您可以将其应用于特定图形,例如:

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/

10-11 03:29