我是MATLAB的新手,我试图显示一些计算的实时图.我有一个N大小的矢量,我一次处理m值(比如说m = N/4),所以我想绘制第一个m值,然后一旦m计算出第二个值就让它们替换第一个图.
我的方法如下:
for i=1:N,
...
//compute m
...
plot(m);
end;
Run Code Online (Sandbox Code Playgroud)
但它无法更新每个循环中的绘图并等待所有循环完成绘制数据.我的问题是:我应该使用另一个函数而不是plot或者我可以在每个循环中添加一些延迟吗?
我认为必须有一种方法我不知道更新情节而不是每次重新绘制它.
我正在尝试创建一个动画情节,但是我的代码非常慢,也许我使用的方法太幼稚了。在下面的示例中,我有4个子图,每个子图有3行,并在“时间”循环中进行了更新。
clc;clear;close all;
state = {'$x-Position$','$x-Velocity$','$y-Position$','$y-Velocity$'};
ylabels = {'$x$','$\dot{x}$','$y$','$\dot{y}$'};
options1 = {'interpreter','latex'};
options2 = {'interpreter','latex','fontsize',20};
maxT = 300;
for pp = 1:4
hh1(pp)=subplot(2,2,pp);
xlabel('$t$',options2{:});
ylabel(ylabels{pp},options2{:});
title(state{pp},options1{:})
xlim([0 maxT])
hold on
end
x = randn(4,300);
z = randn(4,300);
x_est = randn(4,300);
for k = 2:maxT
for p = 1:4
plot(hh1(p),k-1:k,x(p,k-1:k),'b','linewidth',2)
plot(hh1(p),k-1:k,z(p,k-1:k),'m')
plot(hh1(p),k-1:k,x_est(p,k-1:k),':k','linewidth',2)
end
drawnow;
end
Run Code Online (Sandbox Code Playgroud)
从探查器输出中可以看出,这drawnow正在浪费时间。有什么方法可以使我更有效地创建此动画?