Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab-从一系列图创建.gif文件_Matlab_Matlab Figure_Animated Gif - Fatal编程技术网

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

Matlab-从一系列图创建.gif文件,matlab,matlab-figure,animated-gif,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'); images

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

错误来自于输入错误。线路

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
的来源。

我没有得到
frame=getframe(fh)在您的代码和
帧功能磁共振成像
错误。您的复制/粘贴是否正确?不,这不是复制/粘贴错误,当我复制/粘贴时,我通常会将所有变量重写为我习惯的内容,当我创建此帮助时,我将变量更改为最原始的变量,在那里显示的错误实际上两个变量都是相同的,因为我在使用原始变量时也尝试过同样的方法,
getdata
函数是什么?有关如何创建动画gif文件的示例,请参见@沃纳:我想你发错了link@Amro谢谢,我说的是(尽管我不确定它是否会比前一个更有用…)@Werner谢谢这个例子,我发现了很多这样的例子,但令人不安的是,我有一点不同的是,当我导入由matlab生成的.fig文件以生成.gif文件时,这些文件使用了方程。从我在描述中了解到的getdata是一种导入文件的方法。我在中使用的示例是。感谢您的帮助,getdata来自创建.gif文件的原始线程。我没有注意到其中一个支架缺失。+1接球不错。我会使用
hgload
而不是通用的
open
现在我遇到了
的问题???使用==>imwrite参数名称时出错必须是字符串