Matlab将Figure变化过程做成gif或PPT视频演示
的有关信息介绍如下:将Matlab的figure变化过程做成GIF或者视频来演示。并在实现基本功能的前提下加入改进:(1) 图片无坐标,(2)让图片占满整个Figure,(3)调节图片分辨率, (4) 多变化过程同步出现在一个gif, (5) 控制变化过程速度,GIF播放速度, (6)将变化过程可控地用于PPT。
首先需要一个Figure变化过程,这个相信大家都有自己的情况。这里以下面的变化过程为例,代码为:
TestImg = zeros(10,10);
idx = randperm(100);
for ii = 1:length(idx)
TestImg(idx(ii)) = 1;
imagesc(TestImg);
drawnow
end
这里的figure 是imagesc( ),实际情况还可以是plot( ), surf( )等所有的figure类型。
接下来就是核心生成gif的核心代码:
Fig = figure;
filename = 'test.gif';
TestImg = zeros(10,10);
idx = randperm(100);
for ii = 1:length(idx)
TestImg(idx(ii)) = 1;
imagesc(TestImg);
drawnow
frame = getframe(Fig);
im = frame2im(frame);
[imind,cm] = rgb2ind(im,256);
if ii == 1
imwrite(imind,cm,filename,'gif','WriteMode','overwrite', 'Loopcount',inf);
else
imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',0.02);
end
end
效果如图
改进(1)-----图片无坐标
有时在绘制图片的时候不需要坐标。在imagesc( ) 后面加上axis off就行,变成imagesc(TestImg); axis off效果如图
改进(2)-----让图片占满整个Figure
我们发现以上结果还有一部分边框。解决方法是继续在imagesc()后面加上set(gca,'position',[0 0 1 1]);%参数说明[起点x百分比, 起点y百分比, 宽度百分比,高度百分比]
效果如图
改进(3)-----调节图片分辨率
有时为了节约存储空间需要尺寸小一点的gif。继续加上set(gcf,'position',[100 100 256 256]);%参数说明[起点x坐标, 起点y坐标, 宽度像素,高度像素]
效果如图
改进(4)-----多变化过程同步出现在一个gif
有时多个变化过程需要同步出现在一个gif。关键函数是subplot('position',[0 0 0.5 1]);示例代码为:
Fig = figure;
filename = 'test.gif';
TestImg = zeros(10,10);
TestImg2 = zeros(10,10);
idx = randperm(100);
idx2 = randperm(100);
set(gcf,'position',[100 100 512 256]);
for ii = 1:length(idx)
TestImg(idx(ii)) = 1;
TestImg2(idx2(ii)) = randn(1,1);
subplot('position',[0 0 0.5 1]);%参数说明[起点x百分比, 起点y百分比, 宽度百分比,高度百分比]
imagesc(TestImg); axis off
subplot('position',[0.5 0 0.5 1]);%参数说明[起点x百分比, 起点y百分比, 宽度百分比,高度百分比]
imagesc(TestImg2); axis off
drawnow
frame = getframe(Fig);
im = frame2im(frame);
[imind,cm] = rgb2ind(im,256);
if ii == 1
imwrite(imind,cm,filename,'gif','WriteMode','overwrite', 'Loopcount',inf);
else
imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',0.02);
end
end
改进(5)-----控制变化过程速度,GIF播放速度
在imwrite( )中调节'DelayTime'参数即可,范围0 改进(6)-----将变化过程可控地用于PPT 直接将GIF插入到PPT中的话,GIF会一直循环播放,不能随意暂停,也不能随意跳转到某一帧。解决办法是将GIF转化为AVI后再插入到PPT中。转换方法网上就很多了。效果如图: