版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MATLAB基础及应用曹敦虔编著第4章绘图本章学习重点掌握内容:绘制曲线绘制曲面及图形填充图形句柄、修饰与动画图形保存第4章绘图4.1曲线4.2曲面4.3填充图形4.4图形句柄4.5图形修饰4.6动画4.7图形保存4.1曲线曲线有平面曲线和三维空间中的曲线,绘制平面上的曲线使用plot、fplot、ezplot,绘制三维空间中的曲线使用plot3、ezplot3.1.plotplot是MATLAB最基本的作图命令,可绘制函数图像、数据点图、几何形状等图形.其基本格式为:plot(X,Y)
使用默认的样式绘图,X和Y是绘图数据,通常是两个长度相同的向量plot(X,Y,LineSpec)
使用指定的样式绘图,样式包括线型、点型和颜色4.1曲线线型表符号线型符号线型-实线(默认):虚线--短划线-.点划线LineSpec是样式参数,为一个字符串,可以包括线型、点型和颜色.三种样式的元素可以按任何顺序出现,并且可以省略一个或多个选项.例如,':*r'是一个带有星形标记的红色虚线.颜色表符号颜色符号颜色y黄色g绿色m品红b蓝色c青色w白色r红色k黑色符号点型符号点型o圆(o)^正三角形(△)+加号v倒三角形(▽)*星号>
右三角形(▷).点<
左三角形(◁)x叉(×)p五角星(☆)s方形(□)h六角星(✡)d菱形(
)
点型表4.1曲线例4.1绘制函数y=sin(x)+cos(x),−π≤x≤π图形.基本思想:首先对区间[−π,π]作剖分,然后对每一个分点计算对应的函数值,再使用plot函数作图.x=linspace(-pi,pi);%对区间[-π,π]进行均匀剖分y=sin(x)+cos(x);%对每一个分点,计算函数值plot(x,y,'b');%根据数据点(x,y)画图,并指定样式4.1曲线plot函数默认使用直线将相邻的两个点连接起来,当剖分的点比较密时,图像看起来就像一条光滑的曲线.plot函数可以一次画多条曲线,并且为每条曲线指定单独的样式.例如:x=linspace(-pi,pi);y1=sin(x);y2=cos(x);plot(x,y1,'r-.',x,y2,':sg');%在同一坐标系下绘制图形legend('sin(x)','cos(x)');%标识曲线4.1曲线利用plot可以绘制一些平面中的几何图形.下面举几个例子,其它图形可按类似方法绘制.%画圆:fr=2;%半径t=linspace(0,2*pi);%对角度进行剖分x=r*cos(t);%计算圆周上的点x坐标y=r*sin(t);%计算圆周上的点y坐标plot(x,y);%连接相邻的点,构成圆axis([-33-33])
%设置图形显示范围axisequal
%设置图形显示横、纵坐标比例4.1曲线%画三角形:x=[142];%三角形3个顶点的x坐标y=[013];%三角形3个顶点的y坐标plot([xx(1)],[yy(1)]);%连接相邻的点axisequal4.1曲线2.fplotfplot函数用于快速绘制函数图形,可以不用事先计算函数值,只要给出函数句柄(或函数表达式)和自变量范围就可以了.fplot函数格式:fplot(fun,limits)
绘制函数fun的limits范围内的图形fun可以是函数句柄,也可以是字符串形式的函数表达式.limits是一个长度为2的向量,表达绘图区间.例如:4.1曲线fplot('sin(x)*cos(x)',[-pi,pi]);fplot(@(x)sin(x).*cos(x),[-pi,pi]);上面两行代码都绘制了同样的图形4.1曲线3.ezplotezplot与fplot的功能相似,都可以使用函数句柄和函数表达式绘图.不同的是,ezplot还支持隐函数作图.ezplot函数格式:ezplot(fun,limits)
绘制函数fun的limits范围内的图形例如:ezplot('sin(x)+cos(y)=1',[0pi-pi/2pi/2]);%隐函数作图4.1曲线4.plot3plot3是绘制3维空间中的曲线的基本绘图函数,需要先计算数据点,然后使用指定样式绘图,使用方法与plot类似.格式:plot3(X,Y,Z)
使用默认的样式绘图,X、Y和Z是绘图数据,通常是三个长度相同的向量plot3(X,Y,Z,LineSpec)
使用指定的样式绘图4.1曲线t=0:pi/50:10*pi;st=t.*sin(t);ct=t.*cos(t);plot3(st,ct,t)4.1曲线5.ezplot3函数ezplot3也可以绘制三维空间中的曲线.例如:或者ezplot3('t*sin(t)','t*cos(t)','t',[0,10*pi]);ezplot3(@(t)t.*sin(t),@(t)t.*cos(t),@(t)t,[0,10*pi]);4.1曲线6.polarpolar是极坐标作图,例如:t=0:0.01:2*pi;polar(t,sin(t).*cos(2*t),'--b');4.1曲线7.rectangle对于矩形、圆角矩形、圆、椭圆可以使用rectangle来绘制.语法格式:绘制矩形:rectangle('Position',[xywh],Curvature',[00])绘制圆或椭圆:rectangle('Position',[xywh],Curvature',[11])绘制圆角矩形:rectangle('Position',[xywh],Curvature',[ab])4.1曲线x=0;y=0;w=2;h=1;rectangle('Position',[x-w/2y-h/2wh],'Curvature',[00],'EdgeColor','r');%矩形rectangle('Position',[x-w/2y-h/2wh],'Curvature',[0.20.2],'EdgeColor','g');%圆角矩形rectangle('Position',[x-w/2y-h/2wh],'Curvature',[11],'EdgeColor','b');%椭圆rectangle('Position',[x-h/2y-h/2hh],'Curvature',[11],'EdgeColor','c');%圆axisequal4.2曲面绘制三维空间中的曲面的函数有mesh、surf、meshc、meshz以及waterfall等,在绘制前需要计算曲面上各点的空间坐标,再使用曲面绘图函数来绘制图形.MATLAB绘制三维空间中的曲面z=f(x,y)的一般步骤是:(1)
对2个坐标轴进行剖分,得到两个向量x,y;(2)
利用x,y生成网格,得到两个矩阵X,Y;(3)
对每一对X,Y中的元素(即网络中的一个结点),计算对应的函数值Z=f(X,Y);(4)
使用mesh、surf等函数绘制图形.4.2曲面例4.2绘制函数f(x,y)=x2+y2,(−2≤x≤2,−3≤y≤3)的图形.基本思路:先对x轴和y轴进行剖分,再使用meshgrid生成网格,计算网格结点对应的函数值,再使用mesh函数绘制图形.f=@(x,y)x.^2+y.^2;%定义函数x=linspace(-2,2,41);%对x轴进行剖分y=linspace(-3,3,61);%对y轴进行剖分[X,Y]=meshgrid(x,y);%生成网格Z=f(X,Y);%计算每个网络结点对应的函数值mesh(X,Y,Z);%绘制图形4.2曲面
4.2曲面在生成空间中的点之后,函数mesh只是把这些点用直线连接,形成一张弯曲的网络.当剖足够细的时候,网络就逼近了函数z=f(x,y)的图形.也可以使用其它方式来画图,用法与mesh基本一致.函数功能函数功能mesh三维网络图surfl基于彩色照明的三维曲面图meshc带等高线的三维网络图surfnorm三维曲面法线的计算与显示meshz带垂帘的三维网络图waterfall瀑布图surf三维面图ribbon色带图surfc带等高线的三维面图contour3三维等高线图4.2曲面f=@(x,y)x.^2+y.^2;%定义函数x=linspace(-2,2,41);%对x轴进行剖分y=linspace(-3,3,61);%对y轴进行剖分[X,Y]=meshgrid(x,y);%生成网格Z=f(X,Y);%计算每个网络结点对应的函数值mesh(X,Y,Z);%带等高线的三维面图4.2曲面
ezsurfc('sqrt(x^2+y^2)',[-4,4,-4,4]);ezsurfc(@(x,y)sqrt(x.^2+y.^2),[-4,4,-4,4]);或4.3填充图形fill和fill3分别用于填充平面和三维空间中封闭区域.例如:x=[142];%三角形3个顶点的x坐标y=[013];%三角形3个顶点的y坐标fill([xx(1)],[yy(1)],'b');%使用蓝色填充三角形区域axisequal4.3填充图形也可以对三维空间中的平面区域进行填充,例如:X=[0112;1122;0011];Y=[1111;1010;0000];Z=[1111;1010;0000];C=[0.50001.00001.00000.5000;1.00000.50000.50000.1667;0.33300.33300.50000.5000];fill3(X,Y,Z,C)4.3填充图形可以增加参数'facealpha'来设置填充颜色的透明度,例如:t=linspace(0,2*pi);x1=cos(t);y1=0.5+sin(t);x2=-0.5+cos(t);y2=sin(t);x3=0.5+cos(t);y3=sin(t);fill(x1,y1,'r');%使用红色填充圆holdon;fill(x2,y2,'g','facealpha',0.5);%使用绿色填充圆,并设置透明度为0.5fill(x3,y3,'b','facealpha',0.5);%使用蓝色填充圆,并设置透明度为0.5axisequalholdoff4.4图形句柄图形句柄是一幅图形的标识,通过图形句柄可以获取、修改图形的参数,甚至实现简单的动画.当画图时,将画图函数赋值给一个变量,那么这个变量就获得这个图形的句柄.例如:x=linspace(-pi,pi);y=sin(x);g=plot(x,y);%获取图形句柄4.4图形句柄当获得图形柄后,使用get命令可以显示图形的详细信息,例如执行get(g),结果为:g=Color:[00.44700.7410]LineStyle:'-'LineWidth:0.5000Marker:'none'MarkerSize:6MarkerFaceColor:'none'XData:[1x100double]YData:[1x100double]ZData:[1x0double]⋯⋯可以通过修改g的属性值来改变图形的外观.例如:g.Color=[001];图形中曲线将以蓝色显示.也可以使用命令set(g,'Color',[001])来达到同样的目的.4.5图形修饰1.图形窗口使用figure命令可以新建图形窗口,并自动按次序命名为Figure1,Figure2,⋯.也可以使用figure(n)来新建或选择指定的窗口,其中n为整数.4.5图形修饰例4.4分别在两个图形窗口中显示不同的图形.x=-2:0.1:2;y=-2:0.1:2;[X,Y]=meshgrid(x,y);Z=X.^2+Y.^2;figure(1);%创建Figure1图形窗口surf(X,Y,Z);%在Figure1图形窗口上绘图Z=X.^2-Y.^2;figure(2);%创建Figure2图形窗口surf(X,Y,Z);%在Figure2图形窗口上绘图4.5图形修饰使用subplot可以在一个图形窗口中绘制多幅子图.例4.5在同一窗口中显示两个图形x=-2:0.1:2;y=x.^2;z=x.^3;subplot(1,2,1);%1行2列第1个图plot(x,y,'d:r')subplot(1,2,2);%1行2列第2个图plot(x,z,'-*g');4.5图形修饰2.坐标MATLAB允许在绘图前或后设置图形的坐标显示范围、显示比例等.axis([xminxmaxyminymax])
平面图形坐标显示范围axis([xminxmaxyminymaxzminzmaxcmincmax])
空间图形坐标显示范围axisequal
设置坐标轴为等比例axissquare
设置坐标轴为等比例axisnormal
使当前轴区域为方形(或三维时为立方)axisoff
关闭坐标轴axison
打开坐标轴xlim([xminxmax])
设置x坐标显示范围ylim([yminymax])
设置y坐标显示范围zlim([zminzmax])
设置z坐标显示范围4.5图形修饰3.文本可以在图形中加入一些文字说明,增加图形的可读性。text(x,y,'字符串')
在坐标(x,y)处显示字符串gtext('字符串')
使用鼠标在图形中确定字符串的显示位置title('字符串')
为图形添加标题xlabel('字符串')
为x坐标添加说明ylabel('字符串')
为y坐标添加说明zlabel('字符串')
为z坐标添加说明legend('字符串1','字符串2',⋯)
为图形中多条曲线进行标示如果希望使用latex格式输入文本,可以增加参数'Interpreter',并取值为'latex'.4.5图形修饰4.网格如果希望在图形中显示网格线,可以使用gridon命令;如果希望隐藏网格线,则使用gridoff命令.单独使用grid命令可以在两种状态中进行切换.5.持续绘图当新建图形窗口后(执行figure命令或执行绘图命令),holdon命令将使得后面的图形在当前窗口中绘制,这样可以分步将多条曲线或曲面绘制在同一坐标系下.如果希望新绘制的图形覆盖原有图形,可以执行一次holdoff命令.4.6动画使用set函数可以修改图形中的数据,如果在图形上以一定的频率持续画图或修改图形的数据即可实现动画.4.6动画
4.6动画r=1;%弹簧半径t=linspace(0,20*pi,10*50);x=r*cos(t);y=r*sin(t);z=t;g=plot3(x,y,z);%绘制螺旋线axis([-55-55040*pi])%设置图形显示范围v=1;%伸缩方向,v=1时拉伸,v=-1时压缩c=1;%弹簧长度系数while(1)
if(v==1&&c>=2)%如果拉伸到2倍长度
v=-1;%改变为压缩
elseif(v==-1&&c<=0.5)%如果压缩到0.5倍长度
v=1;%改变为拉伸
endc=c+v*0.1;%计算新弹簧长度系数
z=c*t;%计算新弹簧z坐标
set(g,'ZData',z);%更新数据
pause(0.1);%暂停0.1秒end4.6动画
4.6动画%定义波纹函数f=@(x,y,p)abs(sin(p*(x.^2+y.^2))./(x.^2+y.^2));p=3;%频率x=linspace(-5,5,800);%对x轴进行剖分y=linspace(-5,5,800);%对y轴进行剖分[X,Y]=meshgrid(x,y);%生成网络Z=f(X,Y,p);%对每个网络结点计算的函数值g=imshow(Z);%以函数值为灰度显示图像while(1)p=p-0.05;%更新频率
if(p<0.5),p=3;endZ=f(X,Y,p);%重新计算波纹函数值
set(g,'CData',Z);%更新数据
pause(0.05);%暂停end4.6动画
4.6动画
4.6动画
4.6动画person=[10]; %人的初始位置dog=[00]; %狗的初始位置a=1; %人的速率b=1.05; %狗的速率T=100; %截止时间dt=0.1; %离散化时间间隔rectangle('Position',[-1-122],'Curvature'
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年贡山独龙族怒族自治县带编教师招聘考试备考试题及答案解析
- 2026年炉霍县带编教师招聘笔试参考题库及答案解析
- 2026年盘山县带编教师招聘考试备考题库及答案解析
- 2026年温宿县带编教师招聘考试参考题库及答案解析
- ISO 17090-32021 健康信息学 公钥基础设施(PKI) 第3部分 认证机构的策略管理标准立项发展报告
- ISO 18562-12024 医疗保健应用中呼吸气体通道的生物相容性评估第1部分风险管理过程中的评估和测试标准立项发展报告
- 1.5.2 全程量词命题和存在量词命题的否定 教学课件
- 妇科用药疾病用药
- 初中七年级地理《第七、八单元复习:东半球区域认知与核心素养提升》教学设计
- 初中语文七年级《小圣施威降大圣》深度教学设计与实施
- 业主对epc管理制度
- DZ/T 0222-2006地质灾害防治工程监理规范
- 团体标准解读及临床应用-成人经鼻高流量湿化氧疗技术规范2025
- 惠尔顿网络安全审计系统使用手册V0
- 《电机与电气控制基础》中职全套教学课件
- 《贴片工艺培训》课件
- 军队文职招聘(化学)近年考试真题题库(含真题、典型题)
- 全国班主任比赛一等奖《班主任经验交流》课件
- 山东省汽车维修工时定额(T-SDAMTIA 0001-2023)
- 水资源与流域经济协同发展
- 利妥昔单抗护理课件
评论
0/150
提交评论