背景介绍:
Sugar 的《姿态解算》系列推文演示算法的时候用了 MATLAB 的动画。
最近研究体温计也是要通过数据分析来确定温度补偿算法,数据分析的第一步就是数据动态图形化展示。以前也有不少私信 Sugar 问 MATLAB 图画是怎么做的,其实非常简单。
本篇 Sugar 就把 MATLAB 做动画的方法写出来,喜欢的照做一遍立刻就会。
关键三步
1、图像句柄(可以是 plot、animatedline 等)
3、往图像里加数据(可以是 handle.XData()
、addpoints()
)
2、drawnow
本文的核心亮点就是这关键三步,要是没有这个总结那就跟 MATLAB 文档基本没区别了。学东西就是看官方文档,然后自己总结,所谓“把书读薄”就是这个意思。
看不懂总结?没关系,下面 Sugar 精心摘了很多个代码简单、易于理解、重点突出的小例子,照做一遍不但能理解 Sugar 的总结,还能掌握得牢、理解得深。
二维线动画
参考链接:
1、创建动画线条:https://ww2.mathworks.cn/help/matlab/ref/animatedline.html
2、清除动画线条中的点:https://ww2.mathworks.cn/help/matlab/ref/clearpoints.html
【例 1】 代码如下:
theta = linspace(0,2*pi,1000);
h = animatedline();
axis([0,2*pi,-1,1])
for t = theta
addpoints(h,t,sin(t));
drawnow;
end
解读:
1、 linespace 函数
用法:linspace(x1,x2,N)
功能:linspace是Matlab中的一个指令,用于产生x1,x2之间的N点行矢量。其中x1、x2、N分别为起始值、中止值、元素个数。若缺省N,默认点数为100。
X=linspace(1,100)
# 将产生从1到100步长为1的数组。类似于在命令窗口中输入:
X=[1:1:100]
2、下面的【例 4】到【例 8】详解了一类方法的各种效果。
3、动画函数的语法如下图:
4、查询线条中的点
[xdata,ydata] = getpoints(h);