我在 DAQ 上记录了 30 个实验,并使用 xlsread 将这些结果读入 MATLAB。
我现在有一个图,可以在一个图上显示所有 30 次试验。
我想做的是制作一部电影,展示他们一一策划的情节。
实际上,我总共有 60 个线图(30 个输入和 30 个输出),因此如果我可以先显示一个图的输入和输出,然后再显示下一个图,等等,那就太好了。
现在我的代码与此类似:
In_1 = xlsread(filename.xls, #1);
In_2 = xlsread(filename.xls, #2);
...
Out_1 = xlsread(filename.xls, #1);
Out_2 = xlsread(filename.xls, #2);
...
plot(t, In_1,'r')
plot(t, Out_1)
plot(t, In_2,'r')
plot(t, Out_2)
...
我见过很多使用 getframe 和 movie 的例子。这对我没有帮助,因为我正在绘制数据。不是在一段时间间隔内评估的函数。我正在尝试绘制 30 次试验的数据。
最佳答案
使用avifile
创建一个 AVI 文件,然后 addframe
捕获您绘制的每个绘制的图形并将其转换为框架。我还冒昧地添加了 subplots
将两个图保持在同一图中,并将代码重写为循环。
这是我(修订后)建议的解决方案:
aviobj = avifile('output.avi'); %# Create an AVI file
hh = figure;
for i = 1:30
figure(hh) %# Reuse the figure
subplot(2, 1, 1)
eval(['plot(t, In_', num2str(i), ', ''r'')']); %# Plot i-th input
%# axis([ something ]);
subplot(2, 1, 2)
eval(['plot(t, Out_', num2str(i), ', ''r'')']); %# Plot i-th output
%# axis([ something ]);
aviobj = addframe(aviobj, getframe(hh)); %# Convert to a frame
end
aviobj = close(aviobj); %# Close the AVI file
您可以调整avifile
选项来控制生成视频的质量。
另请注意,每个plot
根据绘制的值设置 x 和 y 轴。如果您想保持动画“平滑”,则必须在每次绘图之后使用 axis
强制每个图表的轴保持不变。命令。
关于MATLAB 根据数据绘制动画线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11418385/