Matlab实现动图以及动点的绘制
前沿
- 之前一直在用CSDN进行代码和计算机相关知识的学习,但俗话说好记性不如烂笔头,将自己学习、工作生涯遇到的有趣或印象深刻的问题和知识记录下来作为知识的复习,好的接下来进入主题。
Matlab是一款非常重要的科研软件,本人在大学和现阶段读研中时常用到它,在做最近的课设时为了让数据好看些,想自己做动态图,以下的代码是最基本的动态图以及动态点的绘制,再理解代码基础上大家可以根据自己的项目进行改进。
动态曲线绘制
clc;%清空命令行窗口
close all;%关闭所有图形窗口
clear;%清空所有变量区
%%动态曲线绘制法
x = 0:0.1:2*pi;%x的取值范围,步长为0.1
y = cos(x);%y与x之间的关系
axis([min(x) max(x) min(y) max(y)]);%限制XY轴的范围
line = animatedline('Color','r','LineWidth',3);%主要是animatedline(动态线条)的应用
for i=1:length(x)%一共63组点
addpoints(line,x(i),y(i));%向 an 指定的动画线条中添加 x 和 y 定义的点
MakeGif('GifTest.Gif',i);%保存动态图,此句可以不加
pause(0.1);%调节此参数可以调节曲线动态显示速度
drawnow;%更新图形,新点会自动连接到之前的点
end
动态点绘制
clc;%清空命令行窗口
close all;%关闭所有图形窗口
clear;%清空所有变量区
x = 0:0.1:2*pi;%x的取值范围,步长为0.1
y = cos(x);%y与x之间的关系
plot(x,y);%先画出动态点所在的曲线
hold on;%添加新绘图的时候保留当前绘图
h = plot(x(1),y(1),'Marker','o');%绘制起始点具体各个参数请查询相关文档
for i=1:length(x)
set(h,'XData',x(i),'YData',y(i)); %%重置绘图对象
pause(0.05); %暂停0.1s,使得绘图过程容易观察
MakeGif('Point.Gif',i)
end
关于MakeGif函数
function MakeGif(filename,index)
f = getframe(gcf);
imind = frame2im(f);
[imind,cm] = rgb2ind(imind,256);
if index==1
imwrite(imind,cm,filename,'gif', 'Loopcount',inf,'DelayTime',0.001);
else
imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',0.001);
end
end
- MakeGif是自定义的函数,它在另一个.m文件中,文件名就是函数名运行时记得main文件和函数文件在一个文件夹下。
完结:MakeGif函数是知乎一篇文章写的非本人原创,知乎链接忘记了,具体函数内部各个代码运行逻辑笔者没有进行深入学习,感兴趣的大家可以看看帮助文档或者其他帖子
第一遍正式学习记录的博客,希望自己能够坚持记录