MATLAB 动态图GIF
- 前言
- 一、创建动态图(动态曲线、动态曲面)
- 1. 创建动画曲线(MATLAB animatedline函数)
- 2. 创建动画曲面
- 二. 保存动态图
- 三、完整示例
- 总结
前言
保存为动态图原理:把一系列图片,按照一定时间间隔顺序保存,顺序播放即可。
一、创建动态图(动态曲线、动态曲面)
1. 创建动画曲线(MATLAB animatedline函数)
animatedline:参数设置方法与plot相当,所不同的是可以动态删除添加数据点。
示例:以 y = s i n ( x ) y=sin(x) y=sin(x)为例
x = 0:0.1:2*pi;
y = sin(x);
axis([min(x) max(x) min(y) max(y)]);
line = animatedline('Color','r','LineWidth',3);
for i=1:length(x)
addpoints(line,x(i),y(i));
pause(0.1);
drawnow;
end
其中
- line 是animatedline函数返回的一个结构体(和C语言意思差不多)变量,包含曲线各种属性,后续也可以修改。
- axis 主要是用来对坐标轴进行一定的缩放操作,其操作命令主要如下:
axis( [xmin xmax ymin ymax zmin zmax] ) %设置 x,y,z轴的限制范围。 - addpoints(line,x(i),y(i)) 向已有曲线添加点第i个点 ( x ( i ) , y ( i ) ) (x(i),y(i)) (x(i),y(i)), 并且drawnow配和使用,表示画出新曲线。
- 为限制过快更新,以至于看不到效果,使用**pause(0.1)**暂停程序0.1s。
2. 创建动画曲面
二. 保存动态图
原理:按照 一定时间间隔来 顺序保存 当前MATLAB figure窗口图像。
由于figure窗口图片在变化,我们保存的就是一系列变化的图片序列,再按顺序播放形成动态图。
自编MATLAB 动图存储函数: MakeGif(filename,index)
function MakeGif(filename,index)
f = getframe(gcf);
imind = frame2im(f);
[imind,cm] = rgb2ind(imind,256);
if index==1
imwrite(imind,cm,filename,'gif', 'Loopcount',inf,'DelayTime',0.001);
else
imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',0.001);
end
end
- filename 为保存图像文件名,注意文件名需加单引号。
- index 表示第index张图的索引。
- 'LoopCount’选项:
指定 0,动画将播放一次。
指定 0,指定 1,动画将播放两次,以此类推。
指定Inf值可使动画连续循环。
三、完整示例
1. 动态曲线( y = s i n ( x ) y=sin(x) y=sin(x))
x = 0:0.1:2*pi;
y = sin(x);
axis([min(x) max(x) min(y) max(y)]);
line = animatedline('Color','r','LineWidth',3);
for i=1:length(x)
addpoints(line,x(i),y(i));
MakeGif('my.Gif',i);
pause(0.1);
drawnow;
end
2. 动态曲面
总结
保存为动态图原理:把一系列图片,按照一定时间间隔顺序保存,顺序播放