MATLAB中提供了一些动态显示图形的例子,例如vibes、truss等,但他们的程序结构都和由GUIDE产生的M文件的结构不同。truss中用 while循环来更新图形窗口,pause函数来控制更新的速度。这样的结构是不适合放在某一个子函数中来执行的,否则程序在执行该子函数时无法响应用户的其它操作,只能一开始就设置终止条件,等待动画的自然结束。 在MATLAB环境中,GUI(图形用户界面)动画的制作是一个有趣且实用的技能。MATLAB提供了多种方式来创建动态图形,比如vibes和truss示例,它们展示了如何通过循环和暂停函数来更新图形窗口。然而,这些方法并不适合直接嵌入到由GUIDE生成的M文件的子函数中,因为这样会导致程序在执行动画子函数时无法响应用户的其他操作,除非事先设定好动画的终止条件。 为了解决这个问题,MATLAB引入了定时器(timer)功能,它允许定时触发并周期性地执行指定的函数,同时不影响GUI对用户交互的响应。利用定时器,我们可以创建一个在后台运行的动画机制,使得用户在观看动画的同时,仍能自由地操作GUI的其他部分。 我们需要在GUIDE中设计GUI界面,包括一个启动按钮、停止按钮以及可能的参数调整按钮。启动按钮的回调函数中,我们将创建一个定时器对象,例如: ```matlab objecthandles.timer = timer('Period',0.05,'ExecutionMode','FixedRate',... 'TimerFcn',{@PlotUpdate,handles}); ``` 这里的`Period`参数指定了定时器的触发周期,`ExecutionMode`设为`FixedRate`表示定时器将以固定的间隔执行,`TimerFcn`则指定了当定时器触发时要调用的函数及其参数。 `PlotUpdate`函数负责根据时间更新图形,它接收定时器对象和事件对象作为前两个参数,以及我们传递的handles数据。在该函数中,我们可以根据时间改变曲面的形状,例如更新顶点坐标,并使用`set`命令将新坐标赋给曲面对象的`Vertices`属性,然后调用`drawnow`来立即更新图形。 为了存储动画的动态参数,如振动幅度和相位,我们可以利用曲面对象的`UserData`属性。当需要改变这些参数时,比如在“增大振幅”按钮的回调中,我们可以更新定时器的`TimerFcn`参数,确保每次触发时都能用到最新的参数: ```matlab set(handles.timer,'TimerFcn',{@PlotUpdate,handles}); ``` 在“停止”按钮的回调中,使用`stop(handles.timer)`来终止定时器,从而结束动画。 通过这种方式,我们可以在MATLAB的GUI中创建交互式动画,允许用户在动画进行的同时进行参数调整,而不会干扰动画的执行。记得查阅MATLAB帮助文档中的“timer”主题,以获取更详细的定时器使用指南和更多高级特性。这种技术不仅限于曲面振动动画,也可以应用于各种复杂的动态图形展示和模拟场景。



















- 雨絮风轻2013-07-02看着挺实用的
- ovenyao2013-06-04还不错,适于初学者
- mi_er2013-04-07很有用,还不错
- changfeng10502012-12-06不错,对初学者很有用

- 粉丝: 3
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- java毕业设计,航空销售管理系统
- java毕业设计,招生宣传管理系统
- 一个图书管理系统,java+swing
- java毕业设计,基于java敬老院管理系统
- java毕业设计,洗衣店订单管理系统
- 基于 Java 技术的医院病房舍管理系统设计与实现 基于 Java 平台的智能化病房舍病房综合管理系统开发 基于 Java 的智能化病房病房信息管理系统的设计 基于 Java 技术的智能化病房病房智能
- 网络文化对大学生思想品德的影响之社会实践.ppt
- 网络信息与国家安全.ppt
- 计算机的数据与编码.ppt
- 互联网+”大学生创新创业大赛项目计划书模版.doc
- 项目管理及六底盘损伤管理知识分析评估.pptx
- 日本政府投资项目管理体制研究.docx
- 网上在线购物系统项目管理.docx
- 通讯自动化培训—通讯自动化系统基础培训.pptx
- 网络营销你准备好了吗新生演讲.pptx
- 多目标优化实例和matlab程序.doc


