相关疑难解决方法(0)

MATLAB中的实时绘图

我是MATLAB的新手,我试图显示一些计算的实时图.我有一个N大小的矢量,我一次处理m值(比如说m = N/4),所以我想绘制第一个m值,然后一旦m计算出第二个值就让它们替换第一个图.

我的方法如下:

for i=1:N,
  ...
  //compute m
  ...
  plot(m);
end;
Run Code Online (Sandbox Code Playgroud)

但它无法更新每个循环中的绘图并等待所有循环完成绘制数据.我的问题是:我应该使用另一个函数而不是plot或者我可以在每个循环中添加一些延迟吗?

我认为必须有一种方法我不知道更新情节而不是每次重新绘制它.

graphics matlab plot animation real-time

12
推荐指数
2
解决办法
5万
查看次数

如何在MATLAB中加速非常慢的动画情节

我正在尝试创建一个动画情节,但是我的代码非常慢,也许我使用的方法太幼稚了。在下面的示例中,我有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正在浪费时间。有什么方法可以使我更有效地创建此动画?

performance profiler matlab animation drawnow

1
推荐指数
1
解决办法
974
查看次数

标签 统计

animation ×2

matlab ×2

drawnow ×1

graphics ×1

performance ×1

plot ×1

profiler ×1

real-time ×1