Люди Matlab, по-видимому, постепенно сворачивают функции avifile и addframe в будущих выпусках, заменяя их на VideoWriter и writeVideo соответственно.К сожалению, это означает, что принятый ответ больше не будет работать, так как writeVideo не принимает дескриптор рисунка в качестве аргумента.
Я немного поиграл с ним, и для дальнейшего использования, то же самоеможет быть выполнено с использованием недокументированной функции распечатки.Следующий код прекрасно работает для меня, с дополнительным преимуществом - даже не появляется всплывающее окно графика, поэтому он делает все полностью в фоновом режиме:
fig = figure('Visible','off');
set(fig,'PaperPositionMode','auto');
writerobj = VideoWriter('sample.avi','Uncompressed AVI');
open(writerobj);
for i=1:t
clf(fig);
plot(...); % some arbitrary plotting
hold on;
plot(...); % some other arbitrary plotting
axis([0 50 0 50]);
figinfo = hardcopy(fig,'-dzbuffer','-r0');
writeVideo(writerobj, im2frame(figinfo));
end
close(writerobj);