收藏 分享(赏)

MATLAB_动画图、动态图制作.pdf

上传人:精品资料 文档编号:8541050 上传时间:2019-07-02 格式:PDF 页数:28 大小:542.06KB
下载 相关 举报
MATLAB_动画图、动态图制作.pdf_第1页
第1页 / 共28页
MATLAB_动画图、动态图制作.pdf_第2页
第2页 / 共28页
MATLAB_动画图、动态图制作.pdf_第3页
第3页 / 共28页
MATLAB_动画图、动态图制作.pdf_第4页
第4页 / 共28页
MATLAB_动画图、动态图制作.pdf_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、MATLAB技术论坛电子期刊编辑:xiezh制作:MATLB技术论坛版权:MatlbSky版权所有网址:htp:/w.m 第1期2010.09No.1中国权威MATLAB论坛核心期刊MATLAB技 术 论 坛 简 介 技 术 论 坛 简 介 技 术 论 坛 简 介 技 术 论 坛 简 介目录1动 画的 制作 1.电影动画11电影动画演示实例(一)千变万化的线条12电影动画演示实例(二)跳动的红心1.2擦除动画1.2.1Matlb擦除重绘动画实例(一)运动的小球1.2. atlb擦除重绘动画实例(二)单摆横梁1.2.3Matlb擦除重绘动画实例(三)时钟演示1.2.4atlb擦除重绘动画实例(四

2、)小球绕跑道运动1.3质点动画1.3.1质点动画演示(一)1.3.2质点动画演示(二)平抛运动1.3.质点动画演示(三)导弹发射1.4霓虹灯效果动画1.4.1霓虹灯效果动画实例(一)霓虹闪烁的球体1.4.2霓虹灯效果动画实例(二)一颗花心1.5GIF格式动画制作1.5.1GIF格式动画制作案例绕螺旋线运动的小球2动 画的 保存3有 关动 画制 作的 实验 报告4更 多动 画实 例4.1电影动画演示旋转的山峰4.2擦除动画实例卫星绕地球运动(注释很详细)4.3擦除动画实例太阳地球月亮卫星,绕转演示动画(注释很详细)5光 学夫 朗和 费衍 射现 象模 拟 MATLB源 代码6牛 顿环 动画 演示

3、MATLB源 代码7使 用 MATLB绘 制原 子轨 道和 电子 云图 形8振 动摆 ATLB动 画源 代码MATLAB基础应用版块Matlab中动画的实现、制作和保存http:/ lMatlb的确是一个很优秀的工程计算软件,除了强大的矩阵运算,仿真分析外,绘图功能也是相当的强大。但是由于Matlb本身的多线程编程缺陷(所谓多线程,就是MATLB没法同时执行多个回调,只能排队一个一个的按顺序运行,Tim er对象除外,它是TLAB中唯一能够执行多线程的方法),想要动态的画图,并且能够很好的在GUI中得到控制,还不是一件很容易的事情。但是动画具有生动形象直观的好处,对我的教学、研究等都有不小的作

4、用。那好,我在这里勉为其难的介绍下Matlb中是如何制作动画的。1动画的制作Matlb中动画实现的方法主要有下面三种1.电影动画帖子地址:htp:/w.m /thread-593-1.htm l从不同的视角拍下一系列对象的图形,并保存到变量中,然后按照一定的顺序像电影一样播放。电影动画的好处就是,运行一次可以多次播放,甚至可以直接生成avi文件,直接独立与Matlb环境播放。这是其它三种动画制作方法所不具备的。ATLB中,创建电影动画的过程分为以下四步:step1:调用m ovien函数对内存进行初始化(该步骤在Matlb5.3以上均可省略),创建一个足够大的矩阵,使之能够容纳基于当前坐标轴

5、大小的一系列指定的图形(此处称为帧)。step2:调用getfram e函数生成每个帧。该函数返回一个列矢量,利用这个矢量,就可以创建一个电影动画矩阵。getfram e函数可以捕捉动画帧,并保存到矩阵中。一般将该函数放到for循环中得到一系列的动画帧。该函数格式有:(1)F=gefram e,从当前图形框中得到动画帧(2)F=gefram e(h),从图形句柄h中得到动画帧(3)F=getfram e(h,rect),从图形句柄h的指定区域rec中得到动画帧step3:调用m ovie函数按照指定的速度和次数运行该电影动画。当创建了一系列的动画帧后,可以利用m ovie函数播放这些动画帧。该

6、函数的主要格式有:(1)m ovie(M),将矩阵M中的动画帧播放一次(2)m ovie(,n),将矩阵中的动画帧播放n次(3)m ovie(M,n,fps),将矩阵M中的动画帧以每秒fps帧的速度播放n次step4:调用m ovie2avi函数可以将矩阵中的一系列动画帧转换成视频文件avi文件。这样,即使脱离了m atlb环境都可以播放动画。该方法的经典格式是:%录制电影动画forj=1:n%这里输入我们的绘图命令%M(j)=getframe;endmovie(M)%单帧显示方法f=getframe(gcf);colormap(f.colormap);image(f.cdata);11电 影

7、动 画演 示实 例( 一) 千 变万 化的 线条%bydynamic%seealsohttp:/%2008.7.12closeallfigure(toolbar,none,menubar,none,NumberTitle,.off,name,电影动画录制Matlabsky);axisequalm=moviein(20,gcf);%在当前窗口下,截取20帧set(gca,nextplot,replacechildren,box,off,color,b,xgrid,on)title(截图当前窗口的20帧动画)forj=1:20plot(fft(eye(j+16)m(:,j)=getframe(gc

8、f);%截取动画帧,保存到m变量中endhh=figure(toolbar,none,menubar,none,NumberTitle,.off,name,电影动画播放Matlabsky);title(将截取的动画播放5遍)set(gca,xtick,ytick,xticklabel,yticklabel,)movie(hh,m,5)12电 影动 画演 示实 例( 二) 跳 动的 红心帖子地址:htp:/w.m /viewthread.ph?tid=9489%byxiezhhx=linspace(-2,2,100);X,Y,Z=meshgrid(x,x,x);I1=(X.2+9/4*Y.2+

9、Z.2-1).3-X.2.*Z.3-9/80*Y.2.*Z.3;p=patch(isosurface(X,Y,Z,I1,0);set(p,FaceColor,red,EdgeColor,none);view(3);axisequal;axisoff;light(Posi,0-23);%在(0,-2,3)点处建立一个光源lightingphongset(gca,nextplot,replacechildren);%记录电影XX=get(p,XData);YY=get(p,YData);ZZ=get(p,ZData);forj=1:20bili=sin(pi*j/20);set(p,XData,b

10、ili*XX,YData,bili*YY,ZData,bili*ZZ)F(j)=getframe;end%放映10次movie(F,10)1.2擦除动画帖子地址:htp:/w.m /thread-240-1.htm l画在图形窗口中按照一定的算法连续擦除和重绘图形对象,表现为动画,这个也是MATLB中使用最多的方法。使用Matlb的绘图函数不断重复绘制图形对象,重绘过程中递增式地改变图形对象位置将产生动画效果。在重绘对象的过程中之所以能产生动画效果是由于对原来的图形对象进行了擦除处理。MATLB中,创建擦除重绘动画的过程分为以下三步:step1:设置重绘对象的擦除模式EraseMode模式M

11、atlb的图形绘制函数允许采用不同的擦除模式来擦除原来的对象,不同的擦除模式将产生不同的动画效果。擦除模式是通过没置“EraseMode”属性来完成的,一共有三种擦除模式:noe:重新绘制图形对象时不擦除原来的对象,这种模式可动态演示图形的生成过程,如曲线和旋转曲砸的生成过程background:在重新绘制图形对象之前。用背景色重绘对象来达到擦除原来图形对象的目的。该模式会擦除任何对象和它下面的任何图形Xor:在重新绘制图形对象之前,只擦除原来的对象,不会擦除其他对象或图形。这种模式能产生图形对象移动的效果step2:在循环语句中使用set更改图形的xdat,ydat和zdat等坐标数据ste

12、p3:使用darwno命令刷新屏幕该方法的经典格式是:%擦除重绘模式动画%选择一个擦除模式set(h,erasemode,erasemode)%h是需要执行动画图像的句柄,一般都是由line或者plot创建%需要执行一些图形计算命令%循环语句中更新坐标数据,一般使用for或者whilefori=1:n%必要的MATLAB命令%set(h,xdata,xdata,ydta,ydata)%更新图像的坐标数据drownnow%刷新屏幕%其它Matlab语句%end1.2.1Matlb擦 除重 绘动 画实 例 (一 ) 运 动的 小球functionf=anim_ball(K,ki)%演示红色小球沿一

13、条封闭旋螺线运动的实时动画%仅演示实时动画的调用格式为anim_ball(K)%既演示实时动画又拍摄照片的调用格式为f=anim_ball(K,ki)%K红球运动的循环数(不小于1)%ki指定拍摄照片的瞬间,取1到1034间的任意整数%f存储拍摄的照片数据,可用image(f.cdata)观察照片%产生封闭的运动轨线%bydynamic%allrightsreservedbyhttp:/%2007.10.26%t1=(0:1000)/1000*10*pi;x1=cos(t1);y1=sin(t1);z1=-t1;t2=(0:10)/10;x2=x1(end)*(1-t2);y2=y1(end)

14、*(1-t2);z2=z1(end)*ones(size(x2);t3=t2;z3=(1-t3)*z1(end);x3=zeros(size(z3);y3=x3;t4=t2;x4=t4;y4=zeros(size(x4);z4=y4;x=x1x2x3x4;y=y1y2y3y4;z=z1z2z3z4;h=figure(numbertitle,off,name,擦除动画演示(运动的小球)Matlabsky)plot3(x,y,z,b)axisoff%绘制红点%擦除模式设为xorh=line(Color,100,Marker,.,MarkerSize,40,EraseMode,xor);n=leng

15、th(x);i=1;j=1;%循环改变坐标,表现为小球运动while1ifishandle(h),return,endset(h,xdata,x(i),ydata,y(i),zdata,z(i);drawnow;pause(0.0005)%这里设置小球运动速度i=i+1;ifnargin=2f=getframe(gcf);end%获取指定的帧,保存到f中endifin%判断是否运行了一周,是将i设置为1,并将运行周数j加1i=1;j=j+1;%判断是否到指定的运行周数,是,退出ifjK;break;endendend1.2.Matlb擦 除重 绘动 画实 例 (二 ) 单 摆横 梁%挂摆横梁%

16、bydynamic%seealsohttp:/%2008.6.9%h=figure(numbertitle,off,name,擦除动画演示(挂摆横梁)Matlabsky)%绘制横梁plot(-0.2;0.2,0;0,-k,linewidth,20);%画初始位置的单摆g=0.98;%重力加速度,可以调节摆的摆速l=1;%摆长theta0=pi/4;%初始角度x0=l*sin(theta0);%初始x坐标y0=-l*cos(theta0);%初始y坐标axis(-0.75,0.75,-1.25,0);axisoff%创建摆锤%擦除模式为xorhead=line(x0,y0,color,r,lin

17、estyle,.,erasemode,xor,markersize,40);%创建摆杆body=line(0;x0,-0.05;y0,color,b,linestyle,-,erasemode,xor);%摆的运动t=0;%时间变量dt=0.01;%时间增量while1t=t+dt;theta=theta0*cos(sqrt(g/l)*t);%单摆角度与时间的关系x=l*sin(theta);y=-l*cos(theta);ifishandle(h),return,endset(head,xdata,x,ydata,y);%改变擦除对象的坐标数据set(body,xdata,0;x,ydata

18、,-0.05;y);drawnow;%刷新屏幕end1.2.3Matlb擦 除重 绘动 画实 例 (三 ) 时 钟演 示%将下列命令保存到M文件中,直接运行%Matlab时钟动画演示%rewritebydynamic%moreinformationpleasegotohttp:/trycloseallhfig=figure(NumberTitle,off,name,.ClockAnimationDemo-byMatlabSky,MenuBar,none);theta=linspace(0,6.3,1000);x1=8*cos(theta);y1=8*sin(theta);plot(x1,y1,

19、b,linewidth,1.4)%绘制外表盘holdonaxisequalx2=7*cos(theta);y2=7*sin(theta);plot(x2,y2,y,linewidth,3.5)%绘制内表盘fill(0.4*cos(theta),0.4*sin(theta),r);%绘制指针转轴axisoffaxis(-1010-1010)set(gca,position,0.130.050.7750.815)title(date,fontsize,18)fork=1:12;xk=9*cos(-2*pi/12*k+pi/2);yk=9*sin(-2*pi/12*k+pi/2);plot(xk/9

20、*8xk/9*7,yk/9*8yk/9*7,color,0.30.80.9);text(xk,yk,num2str(k),fontsize,16,color,.0.90.30.8,HorizontalAlignment,center);%表盘时刻标度end%计算时针位置ti=clock;th=-(ti(4)+ti(5)/60+ti(6)/3600)/12*2*pi+pi/2;xh3=4.0*cos(th);yh3=4.0*sin(th);xh2=xh3/2+0.5*cos(th-pi/2);yh2=yh3/2+0.5*sin(th-pi/2);xh4=xh3/2-0.5*cos(th-pi/2

21、);yh4=yh3/2-0.5*sin(th-pi/2);hh=fill(0xh2xh3xh40,0yh2yh3yh40,0.60.50.3);%计算分针位置tm=-(ti(5)+ti(6)/60)/60*2*pi+pi/2;xm3=6.0*cos(tm);ym3=6.0*sin(tm);xm2=xm3/2+0.5*cos(tm-pi/2);ym2=ym3/2+0.5*sin(tm-pi/2);xm4=xm3/2-0.5*cos(tm-pi/2);ym4=ym3/2-0.5*sin(tm-pi/2);hm=fill(0xm2xm3xm40,0ym2ym3ym40,0.60.50.3);%计算秒

22、针位置ts=-(ti(6)/60*2*pi+pi/2;hs=plot(07*cos(ts),07*sin(ts),color,w,linewidth,2);set(gcf,doublebuffer,on);while1;ti=clock;%每次读取系统时间,并进行运算%计算时针位置th=-(ti(4)+ti(5)/60+ti(6)/3600)/12*2*pi+pi/2;xh3=4.0*cos(th);yh3=4.0*sin(th);xh2=xh3/2+0.5*cos(th-pi/2);yh2=yh3/2+0.5*sin(th-pi/2);xh4=xh3/2-0.5*cos(th-pi/2);y

23、h4=yh3/2-0.5*sin(th-pi/2);set(hh,XData,0xh2xh3xh40,YData,0yh2yh3yh40)%计算分针位置tm=-(ti(5)+ti(6)/60)/60*2*pi+pi/2;xm3=6.0*cos(tm);ym3=6.0*sin(tm);xm2=xm3/2+0.5*cos(tm-pi/2);ym2=ym3/2+0.5*sin(tm-pi/2);xm4=xm3/2-0.5*cos(tm-pi/2);ym4=ym3/2-0.5*sin(tm-pi/2);set(hm,XData,0xm2xm3xm40,YData,0ym2ym3ym40)%计算秒针位置

24、ts=-(ti(6)/60*2*pi+pi/2;set(hs,XData,07*cos(ts),YData,07*sin(ts)drawnow;pause(0.09)endcatchMatlabSky-打造最优、专业和权威的Matlab技术交流平台!更多信息参见:.http:/returnend1.2.4Matlb擦 除重 绘动 画实 例 (四 ) 小 球绕 跑道 运动%小球绕跑道运动%rewritebydynamic%moreinformationpleasegotohttp:/%figure(numbertitle,off,name,.MatlabAnimationDemo-bymatla

25、bsky,MenuBar,none)prompt=请输入速度v:,请输入长度L:,请输入半径r:;default=5,10,2;v=5;L=10;r=2;p=inputdlg(prompt,输入参数,1,default);v=str2double(p(1);L=str2double(p(2);r=str2double(p(3);ifvhttp:/returnendendendend1.3质点动画帖子地址:htp:/w.m /thread-594-1.htm l用com et()等函数绘制彗星图,它能演示一个质点的运动。质点运动轨迹动画方式是最简单的动画产生方式,顾名思义,就是产生一个顺着曲线

26、轨迹运动的质点来操作。Matlb中提供了com et和com et3命令来实现质点运动轨迹动画的绘制,其常用格式为:comet(xdata,ydata,p)%p是指彗星的尾巴的长度,可以是常数或者size(x)大小的向量其他具体格式大家可以参考docom et帮助系统该方法的使用一般使用步骤如下:step1:求解出质点完整的运动轨迹坐标x,y和zstep2:使用com et或者com et3直接绘制动点1.3.1质 点动 画演 示 (一 )%bydynamic%seealsohttp:/%2008.6.23%t=0:pi/50:10*pi;x=30*sin(t);y=30*cos(t);z=t

27、;plot3(x,y,z);holdon%axisequalcomet3(x,y,z,0.5)1.3.2质 点动 画演 示 (二 ) 平 抛运 动%bydynamic%seealsohttp:/%2008.6.23%vx=40;t=0:0.01:10;x=vx*t;y=-9.8*t.2/2;comet(x,y)1.3.质 点动 画演 示 (三 ) 导 弹发 射%bydynamic%seealsohttp:/%2008.6.13%vx=100*cos(1/4*pi);vy=100*sin(1/4*pi);t=0:0.001:15;x=vx*t;y=vy*t-9.8*t.2/2;comet(x,y

28、)1.4霓虹灯效果动画帖子地址:htp:/w.m /thread-925-1.htm l如今繁华大都市的夜色中,霓虹闪烁,煞是好看,调用MATLB中的spinm ap函数可以做出这种效果的动画,它是通过旋转颜色映像的方式来呈现这种霓虹闪烁的动画效果。spinm ap函数的调用格式如下:spinmap%旋转颜色映像约5秒钟spinmap(t)%旋转颜色映像约t秒钟,具体时间取决于硬件spinmap(t,inc)%旋转颜色映像约t秒钟,并设置增量参数inc,该参数用来调整闪烁频率spinmap(inf)%不限时旋转颜色映像,若需终止,请按Ctrl+C键1.4.1霓 虹灯 效果 动画 实例 (一

29、) 霓 虹闪 烁的 球体%byxiezhhsphere;%绘制单位球面axisequal;%设置坐标显示比例相同axisoff;%隐藏坐标轴spinmap(20,1);%设置增量参数为1,旋转颜色映像约20秒1.4.2霓 虹灯 效果 动画 实例 (二 ) 一 颗花 心帖子地址:htp:/w.m /viewthread.ph?tid=9489%byqibbxxtclear;clc;closeallc=5;t=linspace(-c,c);x,y=meshgrid(t);z=17*x.2-16*abs(x).*y+17*y.2-225;pcolor(x,y,z);shadinginterppau

30、se(2);spinmap(10)1.5GIF格式动画制作帖子地址:htp:/w.m /thread-9236-12.htm lGIF格式动画以其小巧受到大家的广泛欢迎,本贴以案例形式做一个总结。制作GIF动画要用到getfram e、fram e2im、rgb2ind和im write函数,getfram e函数用来抓取当前图形窗口中的图像,fram e2im函数和rgb2ind函数用来将抓取的图像转为索引图像,im write函数用来将索引图像写入GIF格式动画,需要注意的是im write函数不能将真彩图像写入GIF格式动画。关于这些函数的具体用法,这里不再详述,请版友自行查阅帮助。下

31、面只给出案例。1.5.1GIF格 式动 画制 作案 例 绕 螺旋 线运 动的 小球%byxiezhhfilename=xiezhh.gif;z=linspace(0,10*pi,100);%产生一个行向量x=20*sin(z),zeros(1,10);y=20*cos(z),20*ones(1,10);z=z,linspace(10*pi,0,10);plot3(x,y,z,r,linewidth,2);%绘制螺旋线holdon%图形保持h=plot3(0,20,0,.,MarkerSize,40,EraseMode,xor);xlabel(X);ylabel(Y);zlabel(Z);%添加

32、坐标轴标签axis(-2525-2525040);%设置坐标轴范围view(-210,30);%设置视角fori=1:length(x)set(h,xdata,x(i),ydata,y(i),zdata,z(i);drawnow;%刷新屏幕pause(0.05)f=getframe(gcf);imind=frame2im(f);imind,cm=rgb2ind(imind,256);ifi=1imwrite(imind,cm,filename,gif,Loopcount,inf,DelayTime,0.1);elseimwrite(imind,cm,filename,gif,WriteMode

33、,append,DelayTime,0.1);endend2动画的保存帖子地址:htp:/w.m /thread-59-1.htm l下面再讲述下生成的动画如何保存。动画保存,只有对电影动画而言才有意义,其他两种谈不上保存,因为他们都是实时的,眨眼就过的。而电影动画是先将动画一帧一帧的保存下来,在使用m ovie函数播放。它的好处是,运行一次MATLB程序就可以播放无数次,只要你的帧数据还在。但是这还是不方便,由于它没法脱离MATLB环境,很讨厌。还好MATLB为我们提供了m ovie2avi函数,它可以把动画直接转换成avi文件,而avi文件则可以脱离Matlb环境而在其他地方运行了。请教

34、如何保存matlb的动画?前几天刚答辩完,给你贴上。functionavimakewarningoff;loaddataM,N,K=size(data);data=data/(max(abs(data(:);aviobj=avifile(mymovie.avi,fps,10);forkk=1:10:Kimagesc(data(:,:,kk);set(gca,clim,-11);colormap(hsv(128)frame=getframe(gca);aviobj=addframe(aviobj,frame);endaviobj=close(aviobj);直接保存gif动画m(:,k)=get

35、frame;%构造gif图像的帧,nn(:,:,:)=getframe;%转换为可以直接输出的格式(这会是图像丢失)%如果要制作彩色的图像,你只能把生成的彩色图像单独制作(使用其他软件)nn1=nn.cdata;nn1=rgb2gray(nn1);imwrite(nn1,out.gif,gif,WriteMode,append)3有关动画制作的实验报告帖子地址:htp:/w.m /thread-60-1.htm l设计题目:三维与抛物动画仿真姓名:学号:院系:专业:指导教师:一课程设计目的:1.熟悉课程设计的基本流程;2:掌握MATLB语法结构及调试方法;3:熟悉函数调用,熟练二维画图;4:

36、掌握MATLB语言在控制方面的运用;5:学会用A进行基本仿真;6:掌握MATLB编程技巧,提高编程水平。二系统分析与设计该动画仿真开始时是一个三维动画旋转13次,旋转完后将出现另一个窗口继续进行抛物线旋转动画。抛物线旋转26次后结束旋转,此时动画结束,最后关闭动画窗口,返回MATLB语言环境。设计要求:第一个动画是三维图形在空中旋转,第二个是抛物线按照一定的规则旋转,旋转出一个有形的三维空间多边形。此MATLB动画有两个小动画组成,总体为自动弹出式,即,第一个三维动画结束,自动弹出第二个窗口实现抛物线旋转动画。第一个三维动画运用figure命令创建图形窗口,创建帧矩阵,填充颜色。用m ovie

37、命令控制转动次数。第二个动画同样运用figure命令创建一个信的窗口,当第一个动画结束自动由figure命令弹出第二个窗口运行动画。主要是画出三维空间曲线,利用语句控制其旋转方式,并用语句控制旋转次数,由pause控制每次旋转所停顿的时间,最后旋转出所设计的空间图形。MATLAB动画源程序清单:%Animation:rotatepeak%bydynamic%seealsohttp:/%figure(name,三维动画旋转的山峰Matlabsky);%绘制三维曲面X,Y,Z=peaks(14);surfl(X,Y,Z);axis(-44-44-1111);%建立坐标系axisoff;%去除三维网

38、格线shadinginterp;colormapspring;m=moviein(13);%创建帧矩阵mfori=1:12%命令生成图形view(-37.5+30*(i-1),25);m(:,i)=getframe;%捕获动画帧endmovie(m);%回放动画%Animation:rotateparaboloid%bydynamic%seealsohttp:/%h0=figure(name,三维动画旋转抛物面Matlabsky);axis(-510-510-1080)%建立坐标系holdon%保持当前图形的所有特性%定义三组坐标曲线a=0:0.5:10;b=zeros(size(a);c=a

39、.2;theta=pi/20;xx=a;%设置三维长轴坐标数据yy=b;%设置三维宽轴坐标数据zz=c;%设置三维高度数据%画旋转抛物面fori=1:40M=tan(i*theta)cos(i*theta)0;-cos(i*theta)sin(i*theta)0;001;temp=M*a;b;c;xx(i+1,:)=temp(1,:);yy(i+1,:)=temp(2,:);zz(i+1,:)=temp(3,:);mesh(xx,zz,yy);%绘制三维网格曲面axisoff%去掉三维网格线pause(0.1)%每次旋转停顿0.1秒ifi=26%设置旋转次数breakendend三系统调试过程

40、中出现的主要问题:1:程序程序出错,常会出现未定义变量:Eror:Misingvaribleorfunction.使用非英文符号时有Eror:“EndofInput“expectd,“:found.2:路径出现错误,会出现程序无相应3:程序运行时,不能显示出动画图形,只有三维坐标4:运行一个动画后,不能弹出第二个窗口运行动画5:没有规定运行次数,会出现不断旋转,无法停止6:语句运用错误,运行的动画与理论不符7:常常出现函数调用错误8:不能熟悉及正确使用各种语句9:没有掌握m atlb语句用法,编程时出现很多的用法及运用的错误四系统运行报告与结论:此动画仿真是由两个单独的动画经过修改后组成的,并

41、在两个不同的窗口依次运行动画。经过调试,三维图形转动,没有出现语法错误,而且符合设计要求。抛物线旋转动画中,运用figure语句创建新的窗口,由抛物线按要求旋转,最后转出实际要求的三维空间图形。两幅图形都准确显示,整个程序运行正常。开始设计时,是想做出有规则的动画,第二个开始想的是最后旋转出有规则的三维图形。但由于学会的知识太少,不能实现。五总结:Matlb语言是一种广泛应用于工程计算及数值分析领域的新型高级语言,Matlb功能强大、简单易学、编程效率高;MATLB语言不同于其他计算机语言,它是一种解释语言,即解释一条就执行一条!而且严格的区分中英文!所以,在编制程序时必须细心!这使我们在编制

42、程序的过程中对MATLB有了一个深层次的理解!经过此次MATLB课程设计,我学到了更多MATLB的知识。为了完美的完成这次课程设计,查阅资料看了很多MATLB语言的运用方法,也查阅了很多关于MATLB的书籍,同时我也掌握了很多新知识,特别是了解了许多MATLB函数。在设计过程中,我也碰到了许多问题,走了很多弯路,主要是因为对ATLB还较不熟练,犯了一些常规错误,但最后通我查阅相关书籍和请教同学,问题都解决了。在解决问题过程中,学会了很多MATLB的知识,最重要的是学会了自己解决问题的能力,知道怎么去处理发生的错误。总之,通过MATLB课程设计,我熟悉了课程设计的流程,掌握了MATLB语言的基本

43、语句,学会了独立思考和查阅资料解决问题的能力!六致谢:在这里,多谢老师为我们给我们讲解知识,并且给了我们这次自己动手做动画的机会,使我发现了做动画的乐趣,从而促使我更进一步的学习MATLB语言,并将知识应用与实际问题的解决!增添了生活的丰富。特别感谢Matlbsky联盟的【MATLB动画制作、实现和保存】教程的详细讲解。七参考资料:1.张平编著MATLB基础与应用2.杨杰,阙大顺编著:Matlb语言基础及使用入门3.Matlbsky技术论坛,htp:/w.m 4更多动画实例帖子地址:htp:/w.m /thread-596-1.htm l更多的MATLB实例等着大家自己去开发,我们这里提供了

44、一些,大家可以依葫芦画瓢一样学习下,希望起一个抛砖引玉的作用在本帖中我们提供了如下MATLB动画实例:电影动画、擦除动画和质点动画。4.1电影动画演示旋转的山峰%bydynamic%seealsohttp:/%2008.6.12%figure(toolbar,none,NumberTitle,off,name,.电影动画(RotatePeak)Matlabsky);X,Y,Z=peaks(30);surfl(X,Y,Z);axis(-33-33-1010);axisoff;shadinginterp;colormaphot;m=moviein(15);fori=1:15view(-37.5+2

45、4*(i-1),30);m(:,i)=getframe;endmovie(m);4.2擦除动画实例卫星绕地球运动(注释很详细)%bydynamic%seealsohttp:/%2008.12.23%h=figure(numbertitle,off,name,卫星绕地球旋转演示动画Matlabsky);%设置标题名字s1=0:.01:2*pi;holdon;axisequal;%建立坐标系axisoff;%除掉Axesr1=10;%地球到太阳的平均距离r2=3;%卫星的轨道半径w1=1;%设置地球公转角速度w2=12;%设置卫星绕地球公转角速度t=0;%初始时刻pausetime=.002;%设

46、置视觉暂留时间sita1=0;sita2=0;%设置开始它们都在水平线上set(gcf,doublebuffer,on)%消除抖动plot(-20,18,color,r,marker,.,markersize,40);text(-17,18,太阳);%对太阳进行标识plot(-20,16,color,b,marker,.,markersize,20);text(-17,16,地球);%对地球进行标识plot(-20,14,color,w,marker,.,markersize,13);text(-17,14,卫星);%对卫星进行标识plot(0,0,color,r,marker,.,markersize,60);%画太阳plot(r1*cos(s1),r1*sin(s1);%画地球公转轨道set(gca,xlim,-2020,ylim,-2020);%画地球初始位置p1=plot(r1*cos(sita1),r1*sin(sita

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报