2013-08-22 5 views
2

Итак, когда я просматриваю google о проблеме создания анимации .gif из серии файлов .fig, я натыкаюсь на ту, которая использует файл .sdf, I пытался переписать программу на работу для моих .fig файловMatlab - создать .gif-файл из серии 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

Я не получаю 'frame = getframe (fh);' в вашем коде и 'frame_fmri'. Правильно ли ваша копия/вставка? – marsei

+0

Нет, это не ошибка копирования/вставки при копировании/вставке. Обычно я переписываю всю переменную в то, к чему я привык, и когда я создал эту справку, я изменил переменную на основную переменную, ошибка что на самом деле отображают, что обе переменные одинаковы, потому что я также попробовал то же самое снова при использовании исходной переменной – user2683631

+1

, что такое функция 'getdata'? См. [This] (http://stackoverflow.com/a/11054155/97160) для примера того, как создать анимированный gif-файл. @Werner: Я думаю, что вы разместили неверную ссылку – Amro

ответ

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 откуда.

+0

Благодарим за помощь, getdata исходит из исходного потока, который создавал .gif Я не заметил, что одна из скобок отсутствует. – user2683631

+1

+1 nice catch. Я бы использовал 'hgload' вместо общего' open' – Amro

+0

Теперь у меня проблема с '??? Ошибка использования ==> imwrite Имена параметров должны быть строками. – user2683631

Смежные вопросы