MATLAB-保留不同图形之间的子图(已解决,但版本R2012a可能存在问题)
我是MATLAB新手,我一直在四处寻找我要做的事情,但是结果不太合适 我正在绘制传递函数变化的曲线图,我所做的代码如下: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
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感谢您的更新!请您更新问题标题,包括版本号,以便我们知道版本可能是问题所在。