在“数字”之后添加“保持”会导致情节不同

时间:2016-11-16 18:39:07

标签: matlab matrix plot

我有三个5x5矩阵,即XYU。这是他们的样子。

X =

         0         0         0         0         0
    0.2500    0.2500    0.2500    0.2500    0.2500
    0.5000    0.5000    0.5000    0.5000    0.5000
    0.7500    0.7500    0.7500    0.7500    0.7500
    1.0000    1.0000    1.0000    1.0000    1.0000


Y =

         0    0.2500    0.5000    0.7500    1.0000
         0    0.2500    0.5000    0.7500    1.0000
         0    0.2500    0.5000    0.7500    1.0000
         0    0.2500    0.5000    0.7500    1.0000
         0    0.2500    0.5000    0.7500    1.0000


U =

         0    0.2474    0.4794    0.6816    0.8415
    0.3093    0.5991    0.8519    1.0519    1.1862
    0.7191    1.0224    1.2623    1.4238    1.4962
    1.1929    1.4727    1.6611    1.7460    1.7220
    1.6829    1.8980    1.9950    1.9680    1.8186

现在,如果我尝试使用以下代码段绘制U

figure;
mesh(X, Y, U);

这是输出:

enter image description here

如果我使用以下代码:

figure;
hold on;
mesh(X, Y, U);

我明白了:

enter image description here

为什么会这样?显然没有hold on我还有一个维度。我不知道哪一个是正确的。为什么Matlab会这样做?

1 个答案:

答案 0 :(得分:7)

要了解正在发生的事情,重要的是要知道对于大多数MATLAB绘图命令,如果没有向命令显式提供axes,则默认使用当前axes。如果不存在axes,则创建一个并且它的外观完全由绘图命令控制。如果当前axes对象,通常情节命令将修改axes对象的外观,因为理论上您已经定制它

hold on修改当前轴的NexPlot属性,以便绘制的下一个对象不会覆盖以前的对象。如果当前不存在axeshold将隐式创建axes对象。此新轴对象的默认视图是2D XY视图。由于当您调用axes时,mesh对象现已存在,因此它只使用当前视图(和其他axes参数)而不是更改它。

如果您未致电hold on,则在致电axes之前不会出现mesh,因此mesh会自行创建默认axes个对象具有可视化网格的理想属性。这包括使用3D视图和显示网格线。

您可以通过调用axes来手动更改hold on创建的view(3)的属性,以使用默认的3D视图和grid on来打开网格标记

figure
hold on

% Make it the default 3D view
view(3)

% Show the gridlines
grid on

mesh(X, Y, U)