为什么我不能在同一个窗口中的每次迭代中绘制数据?我尝试使用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
答案 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