MATLAB绘制动画(二)擦除动画

文章介绍了如何在MATLAB中创建图形动画,通过设置EraseMode为background实现曲线的擦除和重绘,进而产生动画效果。然而,MATLAB新版本不再支持EraseMode属性,推荐使用animatedline函数配合addpoints函数来添加和更新数据点,创建动画线条。示例代码展示了如何使用这些函数创建平移的正弦余弦波动画。
摘要由CSDN通过智能技术生成

如果我们在绘制图形之后将原有的图形擦除,并重新绘制,看上去就像动画了
示例:

t = 0;
m = [sin(t);cos(t)];
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);
end

可以看出:

图形不断重新绘制,每次绘制时横坐标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
end

查询线条中的点。

[xdata,ydata] = getpoints(h);

清除线条中的点。

clearpoints(h)
drawnow

输出的动画如下:

演示视频

参考《高等光学仿真——光波导、激光》

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

matlab练习生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值