- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Matlab及应用-第6章MATLAB绘图资料
例 生成一个球体和一个立方体,观察不同光照属性对应的显示效果。 sphere(36); h=findobj(Type,surface); set(h,FaceLighting,phong,FaceColor,interp,... EdgeColor,[0.4,0.4,0.4],BackFaceLighting,lit) hold on vert=[2,0,-1;2,1,-1;3,0,0;3,0,-1;2,0,0;2,1,0;3,1,0;3,0,0]; fac=[1,2,3,4;2,6,7,3;4,3,7,8;1,5,8,4;1,2,6,5;5,6,7,8]; patch(Faces,fac,Vertices,vert,FaceColor,y); light(Position,[1,3,2]); light(Position,[-3,-1,3]); material shiny axis equal hold off 材质处理示例 二维图形 三维图形 三维图形的精细处理 隐函数绘图 低层绘图操作 光照和材质处理 图像显示与动画制作 主要内容 MATLAB提供了图像处理函数,进行图像的读/写与显示 (x,map)=imread(filename,fmt) :将图像文件读入MATLAB工作空间 filename:图像的文件名 fmt:图像文件格式,如 .bmp,.jpg,.tif x: 图像数据矩阵 Map:色图数据矩阵 imwrite(x,filename,fmt)函数:将图像数据输出到文件 image(x):显示图像 为了保证图像的显示效果,一般还应使用colormap函数设置图像色图。 图像显示 例 在C盘根目录下有一图像文件nami.jpg,在图形窗口显示该图像 [x,cmap]=imread(‘c:\nami.jpg); image(x); colormap(cmap); axis image off 图像显示示例 两种常见的动画形式 影片动画 实时动画 影片动画 如果将MATLAB产生的多幅图形保存起来,并利用系统提供的函数进行播放,就可产生动画效果。MATLAB提供了3个函数用于捕捉和播放动画,它们分别为getframe、moviein和movie。 getframe函数可截取每一幅画面信息而形成一个很大的列向量。该向量可保存到一个变量中。显然,保存n幅图就需一个大矩阵。 moviein(n)函数用来建立一个足够大的n列矩阵。该矩阵用来保存n幅画面的数据,以备播放。之所以要事先建立一个大矩阵,是为了提高程序运行速度。 movie(m,n)函数播放由矩阵m所定义的画面n次,默认时播放一次。 动画制作 例 播放一个直径不断变化的球体。 程序如下: [x,y,z]=sphere(50); m=moviein(30); %建立一个30列大矩阵 for i=1:30 surf(i*x,i*y,i*z) %绘制球面 m(:,i)=getframe; %将球面保存到m矩阵 end movie(m,10); %以每秒10幅的速度播放球面 影片动画制作示例 制作实时动画的基本方法是,先画出初始图形,再计算活动对象的新位置,并在新位置上把它显示出来,最后擦除原位置上原有的对象,刷新屏幕。重复操作即可产生动画效果。 EraseMode属性:显示新对象,擦除旧对象,而又不破坏背景图案 none:重新绘制图形对象时不擦除原来的对象,这种模式可动态演示图形的生成过程,如曲线生成过程 background:在重新绘制图形对象之前,用背景色重绘对象来达到擦除原来图形对象的目的。该模式会擦除任何对象和它下面的任何图形 Xor:在重新绘制图形对象之前,只擦除原来的对象,不会擦除其他对象或图形。这种模式能产生图形对象移动的效果 drawnow:当新对象属性设置后,及时刷新屏幕,使新对象显示出来 实时动画制作 例 模拟布朗运动。 n=30; %指定布朗运动的点数 s=0.02; %指定温度或速率 %产生n个随机点(x,y),处于-0.5到0.5之间 x=rand(n,1)-0.5; y=rand(n,1)-0.5; h=plot(x,y,.); %绘制随机点 axis([-1 1 -1 1]) ; axis square grid off set(h,EraseMode,Xor,MarkerSize,20); %设置擦除模式为Xor %循环5000次,产生动画效果 for i=linspace(1,10,5000) drawnow x=x+s*randn(n,1
原创力文档


文档评论(0)