gpt4 book ai didi

matlab:当 `hold off` 不是默认值时, 'add' 语句会永久更改 FigureNextplot 属性

转载 作者:行者123 更新时间:2023-12-04 12:14:52 24 4
gpt4 key购买 nike

我将默认的 FigureNextplot 属性设置为“new”,而不是工厂默认的“add”:

set(groot, 'DefaultFigureNextplot', 'new')
使用时 hold on Matlab 将 FigureNextplot 和 AxesNextplot 属性设置为 'add',因为它应该。然而,当我完成图表的工作时, hold off重置 AxesNextplot 属性,但不重置 FigureNextplot 属性。
这背后的原因是什么?有没有办法继续使用我的默认设置而不删除我的所有代码 hold声明?

最佳答案

您可以使用一种解决方法来防止图形的 NextPlot属性不会被改变:

  • 拦截拨打 hold通过将以下用户定义函数保存在名为 hold.m 的文件中,将该文件放在用户文件夹中,然后将该文件夹添加到带有 addpath 的路径中.
  • 这个用户定义的函数会记录图中的NextPlot属性,调用原hold函数,然后恢复图形的NextPlot属性(property)。
  • function hold(varargin)

    fnp = get(gcf, 'NextPlot'); % get figure's NextPlot property
    w = which('hold' ,'-all'); % paths to the modified and original hold functions
    dir = pwd; % take note of current folder
    cd(fileparts(w{2})); % change to folder of original hold function
    oh = @hold; % get a handle to that function
    cd(dir) % restore folder
    feval(oh, varargin{:}) % call original hold function
    set(gcf, 'NextPlot', fnp); % set figure's NextPlot property to its previous value
    请注意,如果您拨打 hold没有参数在 on 之间切换保持状态和 off , on状态被识别为图形和轴' NextPlot具有值 add 的属性.这个可以在原 hold的代码中看到功能:
    nexta = get(ax,'NextPlot');
    nextf = get(fig,'NextPlot');
    hold_state = strcmp(nexta,'add') && strcmp(nextf,'add');

    因此,如果图中的 NextPlot属性的值为 New , hold state 总是被认为是 off , 不管轴的值' NextPlot属性(property)。因此调用 hold没有参数总是导致情节被举行。

    关于matlab:当 `hold off` 不是默认值时, 'add' 语句会永久更改 FigureNextplot 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69297734/

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