在Matlab'while'循环中绘图

时间:2011-08-22 18:05:20

标签: matlab loops plot

为什么我不能在同一个窗口中的每次迭代中绘制数据?我尝试使用drawnow,但它无效。代码:

t=0;
T=10;
i =1;

while t<T
. . .

time(i)=(i-1)*delta_t;

scrsz = get(0,'ScreenSize');

figure('position',[80 60 scrsz(3)-110 scrsz(4)-150]);

subplot(1,3,1);
plot(time(i),configurations(1,1,i),'-b','LineWidth',2), hold on;
drawnow;
xlabel('Time[s]');
ylabel('X [m]');

subplot(1,3,2);
plot(time(i),configurations(3,1,i),'-b','LineWidth',2), hold on;
drawnow;
xlabel('Time[s]');
ylabel('Z [m]');

subplot(1,3,3);
plot(time(i),configurations(2,2,i),'-b','LineWidth',2), hold on;
drawnow;
xlabel('Time[s]');
ylabel('\phi [deg]');

t=t+1;
i=i+1;

end

1 个答案:

答案 0 :(得分:2)

这是因为您在<{1}}循环中添加了figure('...')。所以每次迭代都会打开一个新窗口。移动该行和while行并将其放在scrsz=...行的正上方(即循环外)。

要绘制到多个图窗口,请使用轴手柄,如下所示:

while t<T

但是,每个hFig1=figure(1);hAxes1=axes; hFig2=figure(2);hAxes2=axes; while ... --- plot(hAxes1,...) plot(hAxes2,...) end 都会创建一个自己的轴。因此,如果您想在循环内的两个不同窗口中绘制多个子图,则必须在循环之前将它们设置为然后再调用。即,

subplot