您的位置首页生活百科

Matlab将Figure变化过程做成gif或PPT视频演示

Matlab将Figure变化过程做成gif或PPT视频演示

的有关信息介绍如下:

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中。转换方法网上就很多了。效果如图: