Matlab中的时间序列动画

时间:2018-10-11 10:09:17

标签: matlab animation time-series

我对使用Matlab中的时间序列不熟悉,正在为实现这一目标而苦苦挣扎。我在这11个位置(见下面的代码)有时间序列的热传递数据(以1微秒为步长,以20毫秒为周期)。对于如何将它们放在一起以能够在每个时间步生成图并在每个时间步使用 getframe 制作动画,我一无所知。对此方法的任何帮助将不胜感激。这是到11个数据文件的链接,在第1列提供时间,在第2列提供热传递:https://drive.google.com/open?id=1oDAdapqvL-blecb7BOLzxpeiJBsqLd59

请随时建议在这种情况下也可能更好的任何其他工具(matplotlib / plotly等)。万分感谢!

close all
clear all

x1=399.5
x2=400.5


y0=0 
y1=4
y2=8
y3=12
y4=16
y5=20
y6=-4
y7=-8
y8=-12
y9=-16
y10=-20

%The gauge locations for the first row will be [x1,y1], [x1,y3], [x1,y5], [x1,y6], [x1,y8],
%[x1,y10]

%The gauge locations for the second row will be [x2,y0], [x2,y2], [x2,y4], [x2,y7],
%[x2,y9]

figure

plot(x1,y1,'r.', x1,y3,'r.', x1, y5, 'r.', x1, y6, 'r.', x1, y8, 'r.', x1, y10, 'r.')
hold
plot(x2,y0,'b.', x2,y2,'b.', x2, y4, 'b.', x2, y7, 'b.', x2, y9, 'b.')
axis([390 410 -30 30])

1 个答案:

答案 0 :(得分:1)

在Matlab中,您可以使用getFramewriteVideo函数。对于一个非常普通的案例,我会加以解释,然后将其应用于您的案例。

假设我们有一个图,该图使用示例函数solverIteration(组成...)在for循环(在求解PDE等时经常发生)内的每次迭代中更改其数据。我们正在域y上绘制向量x

要录制视频,我们必须执行以下操作:

video = VideoWriter('myVideo.avi'); %Create a video object
open(video); % Open video source - restricts the use of video for your program

for m=1:K
    y = solverIteration(y);
    plot(x,y);
    drawnow;

    vidFrame = getframe(gcf);
    % instead of gcf you can specify which figure you want to capture

    clf;

    writeVideo(video,vidFrame); % adds frames to the video

end


close(video);

此脚本是如何录制视频的示例。官方matlab site上有几个示例和说明。