Matlab中动画的实现、制作和保存(转载Matlab技术论坛)

本帖由Matlab技术论坛原创,原帖参见 http://www.matlabsky.com/thread-592-1-1.html

光学夫朗和费衍射现象模拟Matlab源代码http://www.matlabsky.com/thread-363-1-1.html

Matlab中动画制作和实现http://www.matlabsky.com/thread-592-1-3.html

牛顿环动画演示Matlab源代码http://www.matlabsky.com/thread-402-1-3.html

使用MATLAB绘制原子轨道和电子云图形http://www.matlabsky.com/thread-571-1-1.html

振动摆MATLAB动画源代码http://www.matlabsky.com/thread-570-1-1.html

Matlab的确是一个很优秀的工程计算软件,除了强大的矩阵运算,仿真分析外,绘图功能也是相当的强大。

但是由于Matlab本身的多线程编程缺陷(所谓多线程,就是MATLAB没法同时执行多个回调,只能排队一个一个的按顺序运行,Timer对象除外,它是MATLAB中唯一能够执行多线程的方法),想要动态的画图,并且能够很好的在GUI中得到控制,还不是一件很容易的事情。

但是动画具有生动形象直观的好处,对我的教学、研究等都有不小的作用。那好,我在这里勉为其难的介绍下Matlab中是如何制作动画的。

一、动画的制作

Matlab中动画实现的方法主要有下面三种

1.电影动画:从不同的视角拍下一系列对象的图形,并保存到变量中,然后按照一定的顺序像电影一样播放。

http://www.matlabsky.com/thread-593-1-1.html

2.擦除动画:画在图形窗口中按照一定的算法连续擦除和重绘图形对象,表现为动画,这个也是MATLAB中使用最多的方法。

http://www.matlabsky.com/thread-240-1-1.html

3.质点动画:用comet()等函数绘制彗星图,它能演示一个质点的运动

http://www.matlabsky.com/thread-594-1-1.html

二、动画的保存

下面再讲述下生成的动画如何保存。动画保存,只有对电影动画而言才有意义,其他两种谈不上保存,因为他们都是实时的,眨眼就过的

http://www.matlabsky.com/thread-595-1-1.html

三、有关动画制作的实验报告

http://www.matlabsky.com/thread-600-1-1.html

四、更多动画实例

更多的MATLAB实例等着大家自己去开发,我们这里提供了一些,大家可以依葫芦画瓢一样学习下,希望起一个抛砖引玉的作用

http://www.matlabsky.com/thread-596-1-1.html

Matlab动画制作(一)——电影动画

电影动画的好处就是,一次可以多次播放,甚至可以直接生成avi,直接独立与环境播放。这是其它三种动画制作方法所不具备的。

MATLAB中,创建电影动画的过程分为以下四步:

step1:调用moviein对内存进行初始化(该步骤在Matlab5.3以上均可省略),创建一个足够大的,使之能够容纳基于当前坐标轴大小的一系列指定的(此处称为帧)。

step2:调用getframe函数生成每个帧。该函数返回一个列矢量,利用这个矢量,就可以创建一个电影动画矩阵。

getframe函数可以捕捉动画帧,并保存到矩阵中。一般将该函数放到for循环中得到一系列的动画帧。

该函数格式有:

(1)F=gefframe,从当前图形框中得到动画帧

(2)F=gefframe(h),从图形句柄h中得到动画帧

(3)F=getframe(h,rect),从图形句柄h的指定区域rec中得到动画帧

step3:调用movie函数按照指定的速度和次数运行该电影动画。

当创建了一系列的动画帧后,可以利用movie函数播放这些动画帧。

该函数的主要格式有:

(1)movie(M),将矩阵M中的动画帧播放一次

(2)movie(M,n),将矩阵M中的动画帧播放n次

(3)movie(M,n,fps),将矩阵M中的动画帧以每秒fps帧的速度播放n次

step4:调用movie2avi函数可以将矩阵中的一系列动画帧转换成文件avi文件。这样,即使脱离了matlab环境都可以播放动画。

具体参见:

该方法的经典格式是:

%录制电影动画

for j=1:n

%

%这里我们的

%

M(j) =

getframe;

end

movie(M)

%单帧显示方法

f = getframe(gcf);

colormap(f.colormap);

image(f.cdata);

复制

此外,利用immovie函数,我们可以从多帧阵列中创建MATALB 电影动画。

需要注意的是:该函数只能于索引图象,所以,如果用户希望其他类型的图像阵列转换为电影动画,则首先将该图像类型转换为索引类型。

Matlab动画制作(二)——擦除动画

使用Matlab的绘图函数不断重复绘制图形对象,重绘过程中递增式地改变图形对象位置将产生动画效果。在重绘对象的过程中之所以能产生动画效果是由于对原来的图形对象进行了擦除处理。

MATLAB中,创建擦除重绘动画的过程分为以下三步:

step1:设置重绘对象的擦除模式'EraseMode'模式

Matlab的图形绘制函数允许采用不同的擦除模式来擦除原来的对象,不同的擦除模式将产生不同的动画效果。擦除模式是通过没置“EraseMode”属性来完成的,一共有三种擦除模式:

none:重新绘制图形对象时不擦除原来的对象,这种模式可动态演示图形的生成过程,如曲线和旋转曲砸的生成过程

background:在重新绘制图形对象之前。用背景色重绘对象来达到擦除原来图形对象的目的。该模式会擦除任何对象和它下面的任何图形

Xor:在重新绘制图形对象之前,只擦除原来的对象,不会擦除其他对象或图形。这种模式能产生图形对象移动的效果

step2:在循环语句中使用set更改图形的xdata,ydata和zdata等坐标数据

step3:使用darwnow命令刷新屏幕

该方法的经典格式是:

%擦除重绘模式动画

%选择一个擦除模式

set(h,'erasemode',erasemode)%h是需要执行动画图像的句柄,一般都是由line或者plot创建

%

%需要执行一些图形计算命令

%

%循环语句中更新坐标数据,一般使用for或者while

for i=1:n

%

%必要的MATLAB命令

%

set(h,'xdata',xdata,'ydta',ydata)%更新图像的坐标数据

drownnow%刷新屏幕

%

%其它Matlab语句

%

end

Matlab动画制作(三)——质点动画

质点运动轨迹动画方式是最简单的动画产生方式,顾名思义,就是产生一个顺着曲线轨迹运动的质点来操作。

Matlab中提供了comet和comet3命令来实现质点运动轨迹动画的绘制,其常用格式为:

comet(xdata,ydata,p)

p是指彗星的尾巴的长度,可以是常数或者size(x)大小的向量

复制代码

其他具体格式大家可以参考doc comet帮助系统

该方法的使用一般使用步骤如下:

step1:求解出质点完整的运动轨迹坐标x,y和z

step2:使用comet或者comet3直接绘制动点

Matlab动画制作(四)——动画的保存

MATLAB动画保存只对电影动画有意义,因为其他两种都是实时动画,一眨眼过去了,而电影动画是先将动画一帧一帧的保存下来,在使用movie播放。它的好处是,一次MATLAB就可以播放无数次,只要你的帧还在。

但是这还是不方便,由于它没法脱离MATLAB环境,很讨厌。还好MATLAB为我们提供了movie2avi函数,它可以把动画直接转换成avi,而avi文件则可以脱离Matalb环境而在其他地方运行了。

2Re:如何保存matlab的动画?

前几天刚答辩完,给你贴上。

function avimake

warning off;

load data

[M,N,K]=size(data);

data=data/(max(abs(data(:))));

aviobj = avifile('mymovie.avi','fps',10);

for kk=1:10:K imagesc(data(:,:,kk)); set(gca,'clim',[-1 1]);

colormap(hsv(128)) frame = getframe(gca);

aviobj =

addframe(aviobj,frame);

end

aviobj = close(aviobj);

3直接保存gif动画

m(:,k)=getframe;

%%%构造gif的帧,

nn(:,:,:)=getframe;

%%转换为可以直接的格式(这会是图像丢失)

%如果要制作彩色的图像,你只能把生成的彩色图像单独制作(使用其他)

nn1=nn.cdata;

nn1=rgb2gray(nn1);

imwrite(nn1,'out.gif','gif','WriteMode','append')

matlab如何制作振型动画_Matlab中动画的实现、制作和保存(转载Matlab技术论坛)相关推荐

  1. matlab制作动画并保存,[转载]Matlab中动画的实现、制作和保存(转载Matlab技术论坛)...

    Matlab中动画的实现.制作和保存(转载Matlab技术论坛) 本帖由Matlab技术论坛原创,原帖参见 http://www.matlabsky.com/thread-592-1-1.html 光 ...

  2. matlab获取全局变量的值_MATLAB中搜索、查询和全局变量的用法(摘录)

    1.MATLAB有几千个函数,而且很多函数有多种调用方式,怎样才能比较快的学习掌握? (1)熟练掌握MATLAB的在线帮助命令.MALTAB的各个函数,不管是内建函数.M文件函数.还是MEX文件函数等 ...

  3. matlab如何制作振型动画_Matlab 实时动画制作示例

    [ * 例 10.7.5 .3-1 ]制作红色小球沿一条带封闭路径的下旋螺线运动的实时动画. (1)编写函数文件 anim_zzy1.m [anim_zzy1.m] function f=anim_z ...

  4. matlab 动画_MATLAB的动画制作和视频录制

    Matlab中制作动画的方法应该很多, 今天使用animatedline制作二维心形图的动画,并将动画录制成avi格式的视频.心形图的曲线方程如下 Matlab的源码如下: t = linspace( ...

  5. matlab 动画_MATLAB绘图动画(1)

    今天写一个案列,绘图动画 画出以下曲面函数随着theta角的变化的动图 程序代码: clc,clear,close allx=-8:0.5:8;[X,Y]=meshgrid(x);r=sqrt(X.^ ...

  6. matlab科学计数法输入_matlab中科学计数法怎么表示

    在matlab中,科学计数法用如下形式表示: 3.14e5 表示3.14*10^5=314000 另外,如果需要以科学计数法的形式表示,那么需要在执行语句前加如下语句: formatshortE 举例 ...

  7. android擦动画,Android中动画的使用

    首先在res目录下建立anim目录,添加3个xml文件:load_animation_1, load_animation_2, load_animation_3,文件内容分别如下: load_anim ...

  8. matlab 倒数第二个位置_Matlab中在数据分析的使用

    一.数据分析简介: 1.数据的预处理-考虑离群值以及缺失值,并对数据进行平滑处理以便确定可能的模型: 2.数据的汇总-计算基本的统计信息以描述数据的总体位置.规模及形状: 3.数据的可视化-绘制数据以 ...

  9. matlab title多个标题_MATLAB中的直方图处理及均衡化

    直方图是多种空间域处理技术的基础.仿图操作能有效地用于图像增强,直方图固有的信息在其他图像处理应用中也是非常有用的,如图像压缩与分割.訪图在软件中易于计算,也适用于商用硬件设备,因此直方图成为实时图像 ...

最新文章

  1. python数据分析面试_python数据分析面试
  2. ScrollView和ListView冲突解决
  3. 【CoppeliaSim】远程 API 之 Python 控制,对比 V-rep 有些不同
  4. C# winform WebBrowser怎么获取js中的变量的值?怎么触发js的事件?
  5. webapi get请求 FromUri list参数传递
  6. 264 解码之 yuv
  7. zabbix前端php界面,Zabbix前端插件zatree在Zabbix 2.2.1前端报错的解决方案
  8. DispatcherServlet详解
  9. CUDA精进之路(五):图像处理——OTSU二值算法(最大类间方差法、大津法)
  10. [九度][何海涛] 数组中只出现一次的数字
  11. IntelliJ IDEA搭建Hadoop开发环境(下)
  12. 2022-2028中国安全代码审查软件市场现状研究分析与发展前景预测报告
  13. 工作总结—HMC5883L应用的一些说明
  14. 网络编程中,同步传输和异步传输有什么区别
  15. C# 和MsComm
  16. 轻松获取Excel安装路径
  17. windows命令字典(收藏)
  18. docker系统中/var/lib/docker/overlay2
  19. 节点操作-创建createElement||appendChild-/追加-/插入insertBefore-/替换replaceChild-/删除remove-克隆元素 cloneNode(增删改查)
  20. 离散卷积的c语言编程实验,数字信号处理实验一离散卷积c语言编程.ppt

热门文章

  1. JS截取//后面或前面的字符串
  2. PHP 的imageTtfText()函数
  3. mysql导入500g_【案例】Oracle数据库500G~3T大小迁移 详细方法步骤
  4. python中sign函数图片_机器学习 第33集:什么是sign函数?什么是sigmoid函数?( 含有笔记、代码、注释 )...
  5. 电梯,签到,保温杯,电脑测试用例
  6. 分块学习笔记(gu gu gu)
  7. python找工作爬虫秘籍(必看)
  8. python和ansible自动化网络安全工作流程
  9. notepad++ 匹配正则表达式数字替换
  10. 依存句法树可视化(nltk、spacy)