因此,当我浏览谷歌关于如何从一系列.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没有绘制无花果,弹出我们的数字是完全空白的。
答案 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
的来源。