在使用 matlab 或者 octave 时,有时会需要绘制动图(.gif)并保存,这里对动图(其他图片格式,同理)进行阐述。
有的时候,gif 有助于对问题的理解,下面就介绍一下如何利用Matlab来绘制gif图。主要是源代码及结果展示,代码里面有注释,根据自己的需求,进行修改即可。
一、 绘制 正弦函数(y = sin(x))的增长过程
clc, clear, close all;
f_num = 1; % 帧数索引
figure;
for k = 1 : 1 : 100 % 选取的动态参数
x = -pi : 0.1 : pi*k;
y = sin(x);
% 绘制正弦函数
axis([-pi 100*pi -1 1]);
plot(y);
title('y = sin(x)');
F = getframe(gcf); % 截取帧
I = frame2im(F); % 从单个影片帧F返回真色彩(RGB)图像
[I, map] = rgb2ind(I); % 使用具有256种量化银色的最小方差量化法并加入抖动,将RGB图像转换成索引图像I,关联颜色图为map。
if f_num == 1 % 如果不存在该图片,则创建
imwrite(I, map, 'sinFunc.gif', 'gif', 'Loopcount', inf, 'DelayTime', 0.3);
else % 如果已经存在该gif图,则写入数据(此时使用 append 追加模式)
imwrite(I, map, 'sinFunc.gif', 'gif', 'WriteMode', 'append', 'DelayTime', 0.3);
end
f_num = f_num + 1; % 索引帧数+1
end
结果:
二 表现绘图过程,即图形的增长过程
参考内容:
Matlab绘制动态 .gif 图
注:
以下程序均需另存为 m 文件运行,运行后在Matlab的当前路径下,可以看到相应的 gif 文件。
有的 gif 图片是由多个 gif 图片拼接而成的,拼接时所用的软件是 ulead gif animator, 可自行搜索下载。<