p = plot(t,m,'EraseMode','background','MarkerSize',5);
x = -1.5*pi;
axis([x x+2*pi -1.5 1.5]);
grid on
for i = 1:100
t = [t 0.1*i];
m = [m [sin(0.1*i);cos(0.1*i)]];
set(p(1),'XData',t,'YData',m(1,:));
set(p(2),'XData',t,'YData',m(2,:));
drawnow
x = x+0.1;
axis([x x+2*pi -1.5 1.5]);
pause(0.2);
可以看出:
图形不断重新绘制,每次绘制时横坐标x增加,坐标轴的范围同步变化,视觉上就像是不断向前平移。
%p = plot(t,m,'EraseMode','background','MarkerSize',5);
不再是绘制二维曲线,而是得到曲线句柄(可以理解为标记这条曲线)
同时,我们设置曲线的擦除格式EraseMode为background,方便后续擦除
这里,介绍一下曲线的擦除格式:
none:重新绘制图形对象时不擦除原有的对象,可以演示图形的生成,效果类似于我们上一篇中介绍的质子动画
background:也就是我们在这次使用的模式,在重新绘制时会擦除原有的对象。需要注意的是,擦除的不只是曲线句柄指向原有的对象,也包括它下面的任何图形
xor:擦除且仅擦除原有的对象本身
%set(p(2),'XData',t,'YData',m(2,:));
语句,我们设置更新曲线数据,也就是擦除并重画的命令。
注意,在新的MATLAB版本中,运行上述代码会出现以下提示:
警告: EraseMode 属性不再受支持,而且在以后的版本中会出错。
也就是说,这个绘图方式不是现在鼓励使用的了,想要达到同样的效果我们可以使用这个函数代替:
% addpoints();
函数能够向 an 指定的动画线条中添加 x 和 y 定义的点。
使用 animatedline 函数创建一根动画线条。
要在屏幕上显示更新,请使用 drawnow 或 drawnow limitrate。
新点会自动连接到之前的点。
使用格式:
% addpoints(an,x,y)
% addpoints(an,x,y,z)
搭配使用的为animatedline函数:创建一根没有任何数据的动画线条并将其添加到当前坐标区中。通过使用addpoints 函数循环向线条中添加点来创建动画。
使用格式:
%an = animatedline
%an = animatedline(x,y)
%an = animatedline(x,y,z)
举个例子:
clear;
close all
h = animatedline;
axis([0,4*pi,-1,1])
x = linspace(0,4*pi,100);
y = sin(x);
for k = 1:length(x)
addpoints(h,x(k),y(k));
drawnow
查询线条中的点。
[xdata,ydata] = getpoints(h);
清除线条中的点。
clearpoints(h)
drawnow
输出的动画如下:
参考《高等光学仿真——光波导、激光》
h=animatedline(x(1),x(2));
darkgreen = [0 2/3 0];
set(h, ‘linestyle’,‘none’,‘markersize’, 1, ‘color’, darkgreen,‘marker’,‘.’);
在循环末尾修改语句为
addpoints(h,x(1),x(2));
cnt = cnt+1;
drawnow
Matlab动画制作(二)——擦除动画
使用Matlab的绘图函数不断重复绘制图形对象,重绘过程中递增式地改变图形对象位置将产生动画效果。在重绘对象的过程中之所以能产生动画效果是由于对原来的图形对象进行了擦除处理。
MATLAB中,创建擦除重绘动画的过程分为以下三步:
step1:设置重绘对象的擦除模式'EraseMode'模式
Matlab的图形绘制函数允许采用不同的擦除模式
在某些坐标显示设计中,需要删除坐标系上已画出的内容,使得显示效果不显得冗余。
%------------------------------------------------------------------------
% File name: Test
% Last modified Date: 2021年6月2日10点12分
% Author: Jasmine
% Descriptions: MATLAB中如何删除坐标上已画出的
众所周知,MATLAB的绘图能力十分强大。有时,我们不仅需要绘图,还需要制作一些动态视频和动画,下面就来介绍一些matlab里制作动画和视频常用的函数,并举出一些实例。
一.animatedline
animatedline函数可以帮助对线条动画进行优化,允许用户在不重新定义现有点的情况下,添加新的点。源代码如下
a1 = animatedline('Color',[0 .7 .7]);
这里写自定义目录标题欢迎使用Markdown编辑器生成数据作动态图合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片
欢迎使用Markdown编辑器
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
首先打开MATLAB,生成一组数据。
以下是笔者在练习数学建模中的导弹追踪模型所写的一段代码
由于这段代码涉及的其他知识点较多,也不属于这篇文章的重点,有兴趣的读
这个示例代码中,我们首先创建了一条正弦曲线,然后在图形窗口中绘制了这条曲线。在动画中,我们通过不断更新曲线的y值来实现动画效果。在每次更新曲线后,我们重新绘制曲线并暂停一段时间,以便观察动画效果。
除了使用Matlab自带的函数,还可以使用第三方工具箱,例如Animation Toolbox。这个工具箱可以让你更方便地创建和控制动画效果。你可以从Matlab的Add-Ons Store中下载和安装这个工具箱。