gpt4 book ai didi

matlab - 在 "hold on"后面加上 "figure"导致剧情不一样

转载 作者:太空宇宙 更新时间:2023-11-03 19:34:02 25 4
gpt4 key购买 nike

我有三个 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 会这样做?

最佳答案

要了解发生了什么,重要的是要知道对于大多数 MATLAB 绘图命令,如果没有明确向命令提供 axes,则当前的 axes 将被使用默认。如果不存在 axes,则会创建一个,它的外观完全由绘图命令控制。如果当前 axes 对象,通常 plot 命令不会修改 axes 对象的外观,因为理论上您已经对其进行了自定义。

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

如果您不调用 hold on,则在调用 mesh 之前不存在 axes,因此 mesh 创建一个默认的 axes 对象本身,其属性非常适合可视化网格。这包括使用 3D View 和显示网格线。

您可以手动更改由 hold on 创建的 axes 的属性,方法是调用 view(3) 以使用默认的 3D View 和grid on 打开网格标记

figure
hold on

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

% Show the gridlines
grid on

mesh(X, Y, U)

关于matlab - 在 "hold on"后面加上 "figure"导致剧情不一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40639791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com