Matlab - 从一系列图中创建.gif文件

时间:2013-08-22 21:58:00

标签: matlab matlab-figure animated-gif

因此,当我浏览谷歌关于如何从一系列.fig文件创建.gif动画的问题时,我偶然发现了一个使用.sdf文件的动画,我试图重写该程序以便为我的.fig工作文件

clear all;
close all;

dynam = 156;
gif_fps = 24; 
video_filename = 'A.gif';
fh = figure(1);

for i = 1:dynam
    F_data = getdata(['F' num2str(i,'_%03i', '.fig');
    imagesc(F_data);
    drawnow;
    frame = getframe(fh);
    im = frame2im(frame);
    [imind,cm] = rgb2ind(im,256);
    if a == 0;
        imwrite(imind,cm,video_filename,'gif', 'Loopcount',inf);
    else
        imwrite(imind,cm,video_filename,'gif','WriteMode','append','DelayTime',1/gif_fps);
    end
end

所以它弹出一个错误说

???     frame = getframe(fh);
                   |
Error: The expression to the left of the equals sign is not a valid target for an assignment.

我不明白为什么会发生这种情况,而且我也注意到Matlab没有绘制无花果,弹出我们的数字是完全空白的。

1 个答案:

答案 0 :(得分:2)

错误来自拼写错误。这条线

F_data = getdata(['F' num2str(i,'_%03i', '.fig'); %bracket missing at the end

应该阅读

F_data = getdata(['F' num2str(i,'_%03i', '.fig']);

没有括号,Matlab会看到

['F' num2str(i,'_%03i', '.fig');
imagesc(F_data);
drawnow;
frame 

作为单个字母串。因此代码的逻辑是a = b = c,而matlab无法解释这一点。

为了防止出现这样的错误,matlab及其编辑器有一些很好的着色方案,在开始字符串'后面用深红色突出显示文本,当结束'时,将整个字符串变为紫色。用过的。如果您看到一些红色字符跨越多行,则表明存在潜在问题。不幸的是,括号没有这样的行为......


另外,如何打开数字本身?您将看到每个图形是否呈现良好(无空白)并且能够捕获该帧。

for i = 1:dynam

    %open, get the frame from and close the figure 
    fh_tmp = open(['F' num2str(i,'_%03i', '.fig']) 
    frame = getframe(fh_tmp);
    close(fh_tmp);

    im = frame2im(frame);
    ...

我仍然很难找到getdata的来源。