使用Matlab绘制动态曲线,并生成gif图形 您所在的位置:网站首页 matlab二维坐标系旋转动图 使用Matlab绘制动态曲线,并生成gif图形

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

2024-04-20 02:13| 来源: 网络整理| 查看: 265

0. 原由

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

1. 思路

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

保存gif图片的基本思路:将每一帧frame以图片格式保存到gif图片中,指定图片播放的时间间隔,即可保存为gif动态图片。

2. 函数

笔者使用Matlab软件开发了函数MovieXY.mFun_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图片3.5 绘制动态爱心曲线%% 5. 绘制动态爱心曲线 X = linspace(-1.15,1.15,200)'; Y(:,1) = 1/2*(X.^2.^(1/3)+(X.^4.^(1/3)-4*X.^2+4).^(1/2)); Y(:,2) = 1/2*(X.^2.^(1/3)-(X.^4.^(1/3)-4*X.^2+4).^(1/2)); F = MovieXY(X,real(Y),0.005,{'o','s'}); % 绘制动态曲线 Fun_F2gif(F,'Test5.gif',0.01); % 生成gif图片4. 源程序下载



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有