MATLAB-保留不同图形之间的子图(已解决,但版本R2012a可能存在问题)

MATLAB-保留不同图形之间的子图(已解决,但版本R2012a可能存在问题),matlab,matlab-figure,subplot,Matlab,Matlab Figure,Subplot,我是MATLAB新手,我一直在四处寻找我要做的事情,但是结果不太合适 我正在绘制传递函数变化的曲线图,我所做的代码如下: omega = 3; K = omega * omega; for zeta = 0.1:0.1:2 sys = tf(K,[1 2*zeta*omega omega]); figure(); subplot(1,2,1); step(sys); title('Step response'); [num,den] = tfd

我是MATLAB新手,我一直在四处寻找我要做的事情,但是结果不太合适

我正在绘制传递函数变化的曲线图,我所做的代码如下:

omega = 3;
K = omega * omega;

for zeta = 0.1:0.1:2
    sys = tf(K,[1 2*zeta*omega omega]);
    figure();
    subplot(1,2,1);
    step(sys);
    title('Step response');

    [num,den] = tfdata(sys, 'v');
    disp(den);
    r = roots(den);
    subplot(1,2,2);
    %hold (subplot(1,2,2), 'on');
    plot(real(r), imag(r), 'o');
    title('Pole Locations in Complex Plane');
end
每次循环运行时,它都会创建一个新图形。第一个子图对于每个图形都应该是唯一的,但第二个子图应该绘制所有点(所有传递函数分母的根)的累积。我尝试使用
hold(子图(1,2,2),'on')
保留第二个子批,但它不起作用。我的想法是,因为子图是不同的数字,
hold-on
不能使用


我怎样才能解决这个问题?任何帮助都会很好。

解决方案是在子批中使用“标记”。我正在使用您的代码编辑:

omega = 3;
K = omega * omega;

for zeta = 0.1:0.1:2
    sys = tf(K,[1 2*zeta*omega omega]);
    figure();
    sb = subplot(1,2,1);
    set(sb, 'Tag', 'daddy')  % Something to tag with -  memorable
    step(sys);
    title('Step response');

    [num,den] = tfdata(sys, 'v');
    disp(den);
    r = roots(den);

    sb = subplot(1,2,2);
    set(sb, 'Tag', 'child')
    sb = findobj('Tag','child'); % Use MATLAB methods to find your tagged obj

    set(sb,'NextPlot','add'); % set 'NextPlot' property to 'add'

    plot(real(r), imag(r), 'o');
    title('Pole Locations in Complex Plane');
end

这对你有用吗?顺便说一句,这也是在。您也应该使用它。

那么您是否希望第二个子绘图在新绘图下也有第一个绘图?我是说重叠?@am304谢谢你的+1:P。我从MATLAB上得到了它,但只是想解释一下。你怎么能这样做真是太狡猾了!!它对我不起作用,可能是因为我在笔记本电脑上使用2012版的MATLAB。不过这很有帮助!我将研究这些函数,并很快在我的学校计算机上试用这些代码。@user3763711感谢您的更新!请您更新问题标题,包括版本号,以便我们知道版本可能是问题所在。