第一范文网 - 专业文章范例文档资料分享平台

MbookMATLAB4计算的可视化和GUI设计

来源:用户分享 时间:2025/5/16 9:40:17 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

4.8动画

4.8.1以电影方式产生动画

以电影方式产生动画,有两个步骤:

(1) 使用getframe命令来抓取图形作为画面,每个画面都是以一个列向量的方式,置于存放整个电影的矩阵M中。

(2) 使用movie(M,k)命令来播放电影,并可指定矩阵M播放的重复次数k。

【例4.33】使用电影方式制作动画,显示二阶系统的时域波形,最后一个画面如图4.54所示。

n=20;

for i=1:n x=0:0.1:i;

y=1-1/sqrt(1-0.3^2)*exp(-0.3*x).*sin(sqrt(1-0.3^2)*x+acos(0.3)); plot(x,y)

axis([0,20,0,1.5]); %固定坐标轴 M(i)=getframe; %抓取画面 end

movie(M,3) %播放3次

程序分析:使用for循环,画20个不同阶段的波形画面,将画面抓取保存到M矩阵中,播放3次。

图4.54 最后一帧画面

4.8.2以对象方式产生动画

1.擦除属性EraseMode

以对象方式产生动画需要设置EraseMode属性,EraseMode为一个字符串,代表对象的擦除方式,即对于旧对象的处理方式。EraseMode属性有以下几种:

? normal:计算整个画面的数据,重画整个图形。

? xor:将旧对象的点以xor的方式还原,即只画与屏幕色不一致的新对象点,擦除不一致的原对象点,这种方式不会擦除被擦对象下面的其他图像。

? background:将旧对象的点变成背景颜色,实现擦除,这种方式会擦除被擦对象下面的其他图像。

? none:保留旧对象的点,不做任何擦除。 在上述四种EraseMode中,耗费时间的次序是: normal > xor > background > none

2.对象的位置属性

通常在动画过程中,会改变对象的位置或尺寸、颜色等外观属性,位置属性有: ? xdata:为一个向量,代表对象的x坐标值。 ? ydata:为一个向量,代表对象的y坐标值。

3.屏幕刷新

当新对象的属性设置后,应刷新屏幕,使新对象显示出来,刷新屏幕用drawnow命令实现。

4.产生动画

产生动画的具体步骤是:

(1) 先产生一个对象,其EraseMode属性为xor、background或none; (2) 在循环中产生动画,每次循环改变此对象的xdata或ydata(或两者); (3) 使用drawnow命令刷新屏幕

【例4.34】使用对象方式产生用一个红色的小球沿着曲线运动的动画,如图4.55所示。

图4.55 运行界面

x=0:0.1:20;

y=1-1/sqrt(1-0.3^2)*exp(-0.3*x).*sin(sqrt(1-0.3^2)*x+acos(0.3)); plot(x,y)

h=line(0,0,'color','red','marker','.','markersize',40,'erasemode','xor'); %定义红色的小球

for i=1:length(x)

set(h,'xdata',x(i),'ydata',y(i)); %设置小球的新位置 pause(0.005) %暂停0.005秒 drawnow %刷新屏幕 end

程序分析:小球以xor的方式擦除旧曲线,如果将EraseMode改成background方式,则会发现小球会擦掉原来的曲线;drawnow命令的作用是使MATLAB立刻处理set命令,但由于本例中使用pause命令暂停,屏幕一定会得到及时的更新,drawnow如果去掉效果一样。

搜索更多关于: MbookMATLAB4计算的可视化和GUI设计 的文档
MbookMATLAB4计算的可视化和GUI设计.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c2u1vh4ivl11jxus0i34k_12.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top