2

我在 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 和电影的例子。这对我没有帮助,因为我正在绘制 DATA。不是在时间间隔内评估的函数。我正在尝试绘制 30 次数据试验。

4

3 回答 3

1

用于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选项来控制生成的视频的质量。

Alos 请注意,每个都plot根据绘制的值设置 x 和 y 轴。如果要保持动画“流畅”,则必须在每次绘图之后,使用axis命令强制轴对于每个图形保持不变。

于 2012-07-10T18:02:49.447 回答
1

这是一个应该满足您需求的简单示例。

注意:这将创建一个 .avi 文件,之后您可以在大多数多媒体播放器中查看。

%% Open avi file
aviobj = avifile('fileame.avi','compression','none','fps',framerate);

%% Add one frame at a time
for frame = 1:length(frames)             

    h = figure(1);
    % Plot what ever you want here...

    % Fetch frame
    aviobj = addframe(aviobj, getframe(h));
end

%% Close video
aviobj = close(aviobj);

如果您希望将输入和输出绘制在两个单独的轴上,您可以使用subplot.

h = figure(1);
subplot(2,1,1)
% Plot input here...
subplot(2,1,2)
% Plot output here...
于 2012-07-10T17:59:04.890 回答
0

最简单的方法是getframe在 for 循环中使用该命令将每个图放在一个帧中,然后使用该命令播放它们movie,这有一些优点(例如,您可以将结果导出为 avi),但速度很慢有时,如果您想在 matlab 中简单地查看动画并需要它更快一些,您可以刷新绘图窗口中的数据并重新绘制它,它有点复杂,但在这里解释得很好Link

此外,在 matlab 中键入 help getframehelp movie以获取有关如何最好地使用这些命令的一些解释和示例。

希望这可以帮助。

于 2012-07-10T17:45:11.533 回答