如何使用Matlab绘制动态曲线,并生成gif图形

0. 原由

可视化是Matlab软件的突出优势之一,经常需要将仿真或试验得到的数据可视化,有时还希望形成动态曲线,保存成动画,以便生动形象的展示数据。

1. 思路

Matlab中绘制动态曲线的基本思路:绘图并保存图形句柄,使用set函数循环改变图形句柄的xdata和ydata属性,对曲线坐标进行更新,形成动画效果。

保存gif图片的基本思路:动态绘图时将每个步长的figure状态保存到frame文件中,再将每一帧frame以图片格式保存到gif图片中,制定图片播放的时间间隔后,即可保存为gif动态图片。

2. 函数

作者使用Matlab软件开发了函数MovieXY.m和Fun_F2gif.m,分别实现动态曲线绘制和gif图片的保存,简单易用,下面通过实例详细演示。

function F = MovieXY(X,Y,dt,C)
%% F = movieXY(X,Y,dt,C) 动画曲线,可用于数据回放
% X 曲线横坐标,n维列向量,或与Y通维的矩阵
% Y 曲线纵坐标,可为n维列向量或n*k矩阵(k条曲线)
% dt 两相邻数据点之间的时间间隔,单位为秒
% dt影响数据回放的快慢,默认值为0.05s
% C为标记结构体,字符类型,可选'*' 'o'  's'等
% 返回值F为动画的框架frame文件,可用于生成gif图片
function  Fun_F2gif(F,filename,S)
%% Fun_F2gif(F,filename,S)  将frame格式图片框架文件转换为gif图片
% F为frame格式结构体
% S为设置参数,默认为gif动画两帧之间的间隔
% filename为文件名,默认为'Test'
% S为设置参数 S为单帧时间间隔

3. 演示

3.1 动态绘制圆

%% 1. 动态绘制圆
T = linspace(0,2*pi,100)';
X = cos(T);
Y = sin(T);
figure
F = MovieXY(X,Y);                 % 绘制动态曲线
Fun_F2gif(F,'Test1.gif',0.01);    % 生成gif图片

在这里插入图片描述

3.2 绘制动态正弦曲线

%% 2. 绘制动态正弦曲线
X = linspace(0,3,200)';
Y = [sin(2*pi*X) cos(2*pi*X) sin(2*pi*X)+cos(2*pi*X) ];
dt = 0.02;
figure
F = MovieXY(X,Y,dt);            % 绘制动态曲线
Fun_F2gif(F,'Test2.gif',0.01);  % 生成gif图片

在这里插入图片描述

3.3 绘制不同阻尼比二阶系统的动态阶跃响应曲线

T = linspace(0,30,100)';
sys1 = tf(1,[1 0.5 1]);   % 阻尼比0.25
sys2 = tf(1,[1 1 1]);     % 阻尼比0.5
sys3 = tf(1,[1 2 1]);     % 阻尼比1  
Y1 = step(sys1,T);
Y2 = step(sys2,T);
Y3 = step(sys3,T);
dt = 0.01;
figure
F = MovieXY(T,[Y1 Y2 Y3],dt,{'*','o','s'});  % 绘制动态曲线
Fun_F2gif(F,'Test3.gif',0.01);               % 生成gif图片

在这里插入图片描述

3.4 绘制旋转的五角星曲线

t = linspace(0,4*pi,100)';
s1 = 1 + 0.2*sin(5*t);
s2 = 1 + 0.2*sin(5*t+2*pi/3);
s3 = 1 + 0.2*sin(5*t+4*pi/3);
x1 = s1.*cos(t+4*pi/3);  y1 = s1.*sin(t+4*pi/3);
x2 = s2.*cos(t+2*pi/3);  y2 = s2.*sin(t+2*pi/3);
x3 = s3.*cos(t);  y3 = s3.*sin(t);
X = [x1 x2 x3];
Y = [y1 y2 y3];
dt = 0.02;
figure
F = MovieXY(X,Y,dt,{'*','o','s'});   % 绘制动态曲线
Fun_F2gif(F,'Test4.gif',0.01);       % 生成gif图片

在这里插入图片描述

推荐

使用Matlab将抖音视频转换成gif图片

联系作者

有Matlab/Simulink方面的技术问题,欢迎发送邮件至944077462@qq.com讨论。更多Matlab/Simulink原创资料,欢迎关注微信公众号:Matlab Fans
源程序下载:

https://mp.weixin.qq.com/s/Kt0G7f3fpoI8H19WHaqmYw

在这里插入图片描述

  • 37
    点赞
  • 312
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MatlabFans_Mfun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值