Matlab制作视频并转换成gif动态图的两种方法

一、第一个方法比较简单,就是使用movie(f)直接取生成AVI视频文件。

%% f(t)-->f(4*t+12) 并且验证%%
function Signal_change()
tic%记录程序运行时间
figure
n = 0;
t = -2*pi:0.01:2*pi;
y = sin(t);%周期为2*pi
y_result = sin(4*t);
plot(t,y,'b');
xlabel('t');
ylabel('Amplitude');
n = n+1;
F(n) = getframe(gcf);%获取当前图形并且保存到F(n)中
%saveas(gcf,['C:\Users\Administrator\Desktop\图片\',num2str(n),'.jpg']);
hold on
 
%% 验证%%
%f(4*t+12) = f[4*(t + 3)].遵循先外后里原则具体的图形变换实现为:
%1 、先将f(t)压缩4倍
%2、再将压缩的图形左移3个单位。
y_now = sin(t);
h = plot(t,y_now,'--','YDatasource','y_now');
 
 %% f(t)-->f(4*t)%%
for i = 1:0.1:4
y_now = sin(i*t);
refreshdata(h,'caller');
drawnow;
n = n+1;
F(n) = getframe(gcf);
%saveas(gcf,['C:\Users\Administrator\Desktop\图片\',num2str(n),'.jpg']);
pause(0.01);
end
%保留f(4*t)的图形
n = n+1;
plot(t,y_result,'r');
F(n) = getframe(gcf);
%saveas(gcf,['C:\Users\Administrator\Desktop\图片\',num2str(n),'.jpg']);
hold on
 
%% f(4*t)-->f(4*t+12)%%
for j = 0:0.1:3
y_now = sin(4*(t + j));
refreshdata(h,'caller');
drawnow;
n  =n+1;
pause(0.1);
legend('sin(t)','sin(4t+12)','sin(4t)');
F(n) = getframe(gcf);
%saveas(gcf,['C:\Users\Administrator\Desktop\图片\',num2str(n),'.jpg']);
end
movie(F);%生成视频
movie2avi(F,'imovie1.avi','FPS',3);%设置视频的帧率为3,数值越大速度越快
 
toc%记录程序运行时间

二、第二种方法是先将每一个动画中的图片保存下来到一个文件夹中,然后进行读取并且制作处视频文件

程序示例:

function Avi()
%%大小写非常重要%% 
n = 64;

WriterObj = VideoWriter('wmw');
WriterObj.FrameRate = 100;%此语句必须放置在
%WriterObj = VideoWriter('wmw')语句之后才能设置帧率

 

open(WriterObj);for i=1:n%逐次取出文件frame=imread(['C:\Users\Administrator\Desktop\图片\',num2str(i),'.jpg']); %读取文件writeVideo(WriterObj,frame);end close(WriterObj);

 

原图片文件在百度网盘:

链接:https://pan.baidu.com/s/1tCBDnqCoIIcvPzEpE2lSWg 
提取码:bo48 

下载之后保存在桌面上,程序就可以直接运行

三、下面介绍将视频文件转换为gif文件

下载软件:视频GIF转换(百度上搜索就好)

使用很方便。

四、在word中插入gif:

最为方便的办法就是将word文件保存为网页文件,然后打开保存的网页文件gif图片就可以正常显示了

详细参考:http://www.doc88.com/p-330776270831.html

  • 25
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 33
    评论
MATLAB制作GIF动态通常涉及到使用imwrite和imread函数以及pause或waitforbuttonpress等暂停命令来逐帧保存和显示像。以下是一个简单的步骤指南: 1. **创建或读取像序列**: - 使用`imread`读取单张片,或者创建多张片数组。 - 如果需要自动生动画,可以用for循环或cell数组生一系列片。 ```matlab frames = {}; % 创建一个空cell数组存储帧 for i = 1:total_frames % 假设你有一个名为'frame_'与帧数相关的文件名列表 frame = imread('frame_' + num2str(i) + '.jpg'); % 替换为你的文件路径 frames{i} = frame; % 将帧添加到cell数组 end ``` 2. **保存每一帧**: - 使用`imwrite`保存每帧为临时文件,例如`.png`,因为MATLAB的内建功能不直接支持GIF格式。 ```matlab % 假定临时目录为'temp_dir' temp_dir = 'temp_dir'; if ~exist(temp_dir, 'dir') mkdir(temp_dir); end for i = 1:length(frames) filename = fullfile(temp_dir, ['frame' num2str(i) '.png']); imwrite(frames{i}, filename); end ``` 3. **合并为GIF**: - 使用系统调用或者外部工具(如ImageMagick)将PNG帧转换GIFMATLAB不直接支持这个操作。 ```matlab % 假定系统路径下有convert工具 [status, result] = system(['convert -delay 10 ' temp_dir '/*.png ' temp_dir '/animation.gif']); % 延迟时间10毫秒,替换为实际延迟值 if status ~= 0 error('Error converting to GIF'); end ``` 4. **清理临时文件**: - 完GIF制作后,如果需要,删除临时PNG文件。 ```matlab files_to_delete = fullfile(temp_dir, 'frame_*.png'); delete(files_to_delete); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值