第六讲matlab句柄绘图
- 格式:ppt
- 大小:1.13 MB
- 文档页数:20
matlab画图基本函数和参数之plot(2010-06-05 16:54:20)基本语法:plot(Y)plot(X1,Y1,...)plot(X1,Y1,LineSpec,...)plot(...,'PropertyName',PropertyValue,...)plot(axes_handle,...)h = plot(...)hlines = plot('v6',...)详解:plot(Y)如果Y是m×n的数组,以1:m为X横坐标,Y中的每一列元素为Y坐标,绘制n条曲线;如果Y是n×1或者1×n的向量,则以1:n为横坐标,Y为坐标表绘制1条曲线;如果Y是复数,则plot(Y)等效于plot(real(Y),imag(Y));其它使用情况下,忽略坐标数据中的虚部。
plot(X1,Y1,...)如果X和Y都是数组,按列取坐标数据绘图,此时它们必须具有相同的尺寸;如果X和Y其中一个是向量另一个为数组,X和Y中尺寸相等的方向对应绘制多条曲线;如果X和Y其中一个是标量另一个为向量,那么将绘制垂直X或者Y轴离散的点。
plot(X1,Y1,LineSpec,...)通过参数 LineSpec指定曲线的曲线属性,它包括线型、标记符和颜色。
plot函数支持同时绘制任意组图形plot(X1,Y1,LineSpec1,X2,Y2,LineSpec2,...)此时完全等效于plot(X1,Y1,LineSpec1,...)hlod allplot(X2,Y2,LineSpec2,...)MATLAB中提供的线型属性有:需要说明的是,LineSpec中设置曲线线型、标识符和颜色三项属性时,控制符的顺序不受限制并可以省略或者部分省略。
也就是说'r-.*'、'-.r*'、'*-.r'等形式是等效的,都表示使用红色点划线连接各个节点,各节点使用“*”标识。
matlab代码中的func_plot函数[matlab代码中的func_plot函数]是一个用于绘制函数图形的函数。
在本篇文章中,我将会一步一步地回答以下问题:1. 什么是func_plot函数?2. func_plot函数的输入与输出是什么?3. 如何使用func_plot函数绘制函数图形?4. func_plot函数的内部实现原理是什么?5. 为什么使用func_plot函数绘制函数图形?6. func_plot函数的优缺点是什么?7. 如何扩展func_plot函数的功能?8. 有哪些常见的替代方案可以替代func_plot函数?现在,让我们一起来探索这个有趣的函数吧!1. 什么是func_plot函数?func_plot函数是一个在Matlab中实现的用于绘制函数图形的工具函数。
它允许用户通过输入一个函数表达式、指定自变量范围和绘图样式等参数来生成相应的函数图形。
2. func_plot函数的输入与输出是什么?func_plot函数的输入包括函数表达式、自变量范围和绘图样式等参数。
函数表达式可以是一个字符串,比如'sin(x)',也可以是一个函数句柄,比如(x)sin(x)。
自变量范围用一个二元向量表示,比如[0, 2*pi],表示自变量x的取值范围为从0到2*pi。
绘图样式参数可以为空,也可以包含线型、颜色、标记等信息,比如'-r' 表示红色实线。
func_plot函数的输出是一个函数图形对象,可以通过调用其他绘图函数来进一步修改和操作。
3. 如何使用func_plot函数绘制函数图形?使用func_plot函数绘制函数图形的步骤如下:Step1: 在Matlab命令窗口或者脚本中调用func_plot函数。
Step2: 指定函数表达式参数,比如'sin(x)' 或者(x)sin(x)。
Step3: 指定自变量范围参数,比如[0, 2*pi]。
matlab画图中线型及颜⾊设置matlab受到控制界⼴泛接受的⼀个重要原因是因为它提供了⽅便的绘图功能.本章主要介绍2维图形对象的⽣成函数及图形控制函数的使⽤⽅法,还将简单地介绍⼀些图形的修饰与标注函数及操作和控制MATLAB各种图形对象的⽅法.第⼀节图形窗⼝与坐标系⼀.图形窗⼝1.MATLAB在图形窗⼝中绘制或输出图形,因此图形窗⼝就像⼀张绘图纸.2. 在MATLAB下,每⼀个图形窗⼝有唯⼀的⼀个序号h,称为该图形窗⼝的句柄.MATLAB通过管理图形窗⼝的句柄来管理图形窗⼝;3.当前窗⼝句柄可以由MATLAB函数gcf获得;4.在任何时刻,只有唯⼀的⼀个窗⼝是当前的图形窗⼝(活跃窗⼝);figure(h)----将句柄为h的窗⼝设置为当前窗⼝;5.打开图形窗⼝的⽅法有三种:1)调⽤绘图函数时⾃动打开;2)⽤File---New---Figure新建;3)figure命令打开,close命令关闭.在运⾏绘图程序前若已打开图形窗⼝,则绘图函数不再打开,⽽直接利⽤已打开的图形窗⼝;若运⾏程序前已存在多个图形窗⼝,并且没有指定哪个窗⼝为当前窗⼝时,则以最后使⽤过的窗⼝为当前窗⼝输出图形.6.窗⼝中的图形打印:⽤图形窗⼝的File菜单中的Print项.7.可以在图形窗⼝中设置图形对象的参数.具体⽅法是在图形窗⼝的Edit菜单中选择Properties项,打开图形对象的参数设置窗⼝,可以设置对象的属性.⼆.坐标系1.⼀个图形必须有其定位系统,即坐标系;2.在⼀个图形窗⼝中可以有多个坐标系,但只有⼀个当前的坐标系;3.每个坐标系都有唯⼀的标识符,即句柄值;4.当前坐标系句柄可以由 MATLAB函数gca获得;5.使某个句柄标识的坐标系成为当前坐标系,可⽤如下函数:axes(h) h为指定坐标系句柄值.6.⼀些有关坐标轴的函数:1)定义坐标范围:⼀般MATLAB⾃动定义坐标范围,如⽤户认为设定的不合适,可⽤:axis([Xmin, Xmax, Ymin, Ymax]) 来重新设定;292) 坐标轴控制:MATLAB的缺省⽅式是在绘图时,将所在的坐标系也画出来,为隐去坐标系,可⽤axis off;axis on则显⽰坐标轴(缺省值).3)通常MATLAB的坐标系是长⽅形,长宽⽐例⼤约是 4:3,为了得到⼀个正⽅形的坐标系可⽤:axis square4)坐标系横纵轴的⽐例是⾃动设置的,⽐例可能不⼀样,要得到相同⽐例的坐标系,可⽤:axis equal第⼆节⼆维图形的绘制⼀. plot函数plot 函数是最基本的绘图函数,其基本的调⽤格式为:1.plot(y)------绘制向量y对应于其元素序数的⼆维曲线图, 如果y为复数向量,则绘制虚部对于实部的⼆维曲线图.例:绘制单⽮量曲线图.y=[0 0.6 2.3 5 8.3 11.7 15 17.7 19.4 20];plot(y)由于y⽮量有10个元素,x坐标⾃动定义为[1 2 3 4 5 6 7 8 9 10].图形为: 1234567891024681012141618202.plot(x,y)------ 绘制由x,y所确定的曲线.1)x,y是两组向量,且它们的长度相等,则plot(x,y)可以直观地绘出以x为横坐标,y为纵坐标的图形.如:画正弦曲线:t=0:0.1:2*pi;y=sin(t);plot(t,y)2)当 plot(x,y)中,x是向量,y是矩阵时,则绘制y矩阵中各⾏或列对应于30向量x的曲线.如果y阵中⾏的长度与x向量的长度相同,则以y的⾏数据作为⼀组绘图数据;如果y阵中列的长度与x向量的长度相同,则以y的列数据作为⼀组绘图数据;如果y阵中⾏, 列均与x向量的长度相同,则以y的每列数据作为⼀组绘图数据.例:下⾯的程序可同时绘出三条曲线.MATLAB在绘制多条曲线时,会按照⼀定的规律⾃动变化每条曲线的的颜⾊.x=0:pi/50:2*pi;y(1,:)=sin(x);y(2,:)=0.6*sin(x);y(2,:)=0.3*sin(x);plot(x,y)或者还可以这样⽤:x=0:pi/50:2*pi;y=[ sin(x); 0.6*sin(x); 0.3*sin(x)];plot(x,y)01234567-1-0.8-0.6-0.4-0.20.20.40.60.813) 如果x,y是同样⼤⼩的矩阵,则plot(x,y)绘出y中各列相应于x中各列的图形.例:x(1,:)=0:pi/50:2*pi;x(2,:)=pi/4:pi/50:2*pi+pi/4;x(3,:)=pi/2:pi/50:2*pi+pi/2;y(1,:)=sin(x(1,:));y(2,:)=0.6*sin(x(2,:));y(3,:)=0.3*sin(x(3,:));plot(x,y)x=x';y=y';figure31plot(x,y)在这个例⼦中,x------ 3x101,y------3x101,所以第⼀个plot按列画出101条曲线,每条3个点;⽽x'------101x3,y'------ 101x3,所以第⼆个plot按列画出3条曲线,每条101个点.012345678-1-0.8-0.6-0.4-0.20.20.40.60.81012345678-1-0.8-0.6-0.4-0.20.20.40.60.813. 多组变量绘图:plot(x1, y1, 选项1, x2, y2, 选项2, ……)上⾯的plot格式中,选项是指为了区分多条画出曲线的颜⾊,线型及标记点⽽设定的曲线的属性.MATLAB在多组变量绘图时,可将曲线以不同的颜⾊,不同的线型及标记点表⽰出来.这些选项如下表所⽰:各种颜⾊属性选项选项意义选项意义'r' 红⾊ 'm' 粉红'g' 绿⾊ 'c' 青⾊32'b' 兰⾊ 'w' ⽩⾊'y' 黄⾊ 'k' ⿊⾊各种线型属性选项选项意义选项意义'-' 实线 '--' 虚线':' 点线 '-.' 点划线各种标记点属性选项选项意义选项意义'.' ⽤点号绘制各数据点 '^' ⽤上三⾓绘制各数据点'+' ⽤'+'号绘制各数据点 'v' ⽤下三⾓绘制各数据点'*' ⽤'*'号绘制各数据点 '>' ⽤右三⾓绘制各数据点' .' ⽤'.'号绘制各数据点 '<' ⽤左三⾓绘制各数据点's'或squar ⽤正⽅形绘制各数据点'p' ⽤五⾓星绘制各数据点'd'或diamond⽤菱形绘制各数据点 'h' ⽤六⾓星绘制各数据点这些选项可以连在⼀起⽤,如:'-.g'表⽰绘制绿⾊的点划线,'g+'表⽰⽤绿⾊的 '+'号绘制曲线.注意:1)表⽰属性的符号必须放在同⼀个字符串中;2)可同时指定2~3个属性;3) 与先后顺序⽆关;4)指定的属性中,同⼀种属性不能有两个以上.例:t=0:0.1:2*pi;y1=sin(t);y2=cos(t);y3=sin(t).*cos(t);plot(t,y1, '-r',t,y2, ':g',t,y3, '*b')该程序还可以按下⾯的⽅式写:t=0:0.1:2*pi;y1=sin(t);y2=cos(t);y3=sin(t).*cos(t);plot(t,y1, '-r')hold onplot(t,y2, ':g')plot(t,y3, '*b')hold off注:在MATLAB中,如画图前已有打开的图形窗⼝,则再画图系统将⾃动擦掉坐标系中已有的图形对象,但设置了hold on后,可以保持坐标系中已绘出的图形.3301234567-1-0.8-0.6-0.4-0.20.20.40.60.81图(a)还可以进⼀步设置包括线的宽度(LineWidth),标记点的边缘颜⾊(MarkerEdgeColor),填充颜⾊ (MarkerFaceColor)及标记点的⼤⼩(MarkerSize)等其它绘图属性.例:设置绘图线的线型,颜⾊,宽度,标记点的颜⾊及⼤⼩.t=0:pi/20:pi;y=sin(4*t).*sin(t)/2;plot(t,y,'-bs','LineWidth',2,... %设置线的宽度为2'MarkerEdgeColor','k',... %设置标记点边缘颜⾊为⿊⾊'MarkerFaceColor','y',... %设置标记点填充颜⾊为黄⾊'MarkerSize',10) %设置标记点的尺⼨为10绘出图形如下:00.511.522.533.5-0.5-0.4-0.3-0.2-0.10.10.20.30.40.5344. 双Y轴绘图:plotyy()函数.其调⽤格式为:plotyy(x1,y1,x2,y2)------ 绘制由x1,y1和x2,y2确定的两组曲线,其中x1,y1的坐标轴在图形窗⼝的左侧,x2,y2的坐标轴在图形窗⼝的右侧.Plotyy(x1,y1,x2,y2, 'function1','function2')------功能同上,function是指那些绘图函数如:plot,semilogx,loglog 等.例如:在⼀个图形窗⼝中绘制双Y轴曲线.x=0:0.3:12;y=exp(-0.3*x).*sin(x)+0.5;plotyy(x,y,x,y,'plot','stem')图形如下:0246810120.511.50246810120.511.5stem: 绘制stem形式的曲线(上端带圈的竖线).绘图结果:两条图线⾃动⽤不同的颜⾊区分,两个坐标的颜⾊与图线的颜⾊相对应,左边的Y轴坐标对应的是plot形式的曲线,右边的Y坐标对应的是stem形式的曲线.⼆.对数坐标图绘制函数:在对数坐标图的绘制中,有三种绘图函数:semilogx,semilogy和loglog函数.1)semilogx( )------绘制以X轴为对数坐标轴的对数坐标图.其调⽤格式为:semilogx(x,y,'属性选项')其中属性选项同plot函数.该函数只对横坐标进⾏对数变换,纵坐标仍为线性坐标.2)semilogy( )------绘制以Y轴为对数坐标轴的对数坐标图.其调⽤格式为:semilogy(x,y,'属性选项')该函数只对纵坐标进⾏对数变换,横坐标仍为线性坐标.353)loglog( )------ 绘制X,Y轴均为对数坐标轴的图形.其调⽤格式为:loglog(x,y,'属性选项')该函数分别对横,纵坐标都进⾏对数变换.例:x=0:0.1:6*pi;y=cos(x/3)+1/9;subplot(221), semilogx(x,y);subplot(222), semilogy(x,y);subplot(223), loglog(x,y);4)MATLAB还提供了⼀个实⽤的函数:logspace( )函数, 可按对数等间距地分布来产⽣⼀个向量,其调⽤格式为:x=logspace(x1,x2,n)这⾥,x1 表⽰向量的起点;x2表⽰向量的终点;n表⽰需要产⽣向量点的个数(⼀般可以不给出,采⽤默认值50).在控制系统分析中⼀般采⽤这种⽅法来构成频率向量w.关于它的应⽤后⾯还要讲到.三.极坐标图的绘制函数:绘极坐标图可⽤polar( )函数.其调⽤格式如下:polar(theta, rho,'属性选项')------theta:⾓度向量,rho:幅值向量,属性内容与plot函数基本⼀致.例如:极坐标模型为:3145/)/)cos((+ =θρ, ],[πθ80∈则绘出极坐标图的程序为:theta=0:0.1:8*pi;p=cos((5*theta)/4)+1/3;polar(theta,p)0.511.53021060240902701203001503301800四. 绘制多个⼦图:subplot( )函数MATLAB允许在⼀个图形窗⼝上绘制多个⼦图(如对于多变量系统的输出),允许将窗⼝分成nxm个部分.分割图形窗⼝⽤subplot函数来实现,其调⽤格式为:subplot(n,m,k) 或subplot(nmk)------n,m分别表⽰将窗⼝分割的⾏数和列数, 36k表⽰要画图部分的代号,表⽰第⼏个图形,nmk三个数可以连写,中间不⽤符号分开.例如:将窗⼝划分成2x2=4个部分,可以这样写:subplot(2,2,1),plot(……)subplot(2,2,2),……subplot(2,2,3),……subplot(2,2,4),……221 222223 224注:subplot函数没有画图功能,只是将窗⼝分割.第三节图形的修饰与标注MATLAB提供了⼀些特殊的函数修饰画出的图形,这些函数如下:1) 坐标轴的标题:title函数其调⽤格式为:title('字符串')------字符串可以写中⽂如:title('My own plot')2)坐标轴的说明:xlabel和ylabel函数格式:xlabel('字符串')ylabel(' 字符串')如:xlabel('This is my X axis')ylabel('My Y axis')3)图形说明⽂字:text和gtext函数A.text函数:按指定位置在坐标系中写出说明⽂字.格式为:text(x1, y1, '字符串', '选项')x1,y1为指定点的坐标;'字符串'为要标注的⽂字;'选项'决定x1,y1的坐标单位,如没有选项,则x1,y1的坐标单位和图中⼀致;如选项为'sc',则x1,y1表⽰规范化窗⼝的相对坐标,其范围为0到1.(1,1)规范化窗⼝(0,0)37如:text(1,2, '正弦曲线')B.gtext函数:按照⿏标点按位置写出说明⽂字.格式为:gtext('字符串')当调⽤这个函数时,在图形窗⼝中出现⼀个随⿏标移动的⼤⼗字交叉线,移动⿏标将⼗字线的交叉点移动到适当的位置,点击⿏标左键,gtext参数中的字符串就标注在该位置上.4) 给图形加⽹格:grid函数在调⽤时直接写grid即可.上⾯的函数的应⽤实例:例: 在图形中加注坐标轴标识和标题及在图形中的任意位置加⼊⽂本.t=0:pi/100:2*pi;y=sin(t);plot(t,y),grid,axis([0 2*pi -1 1])xlabel('0 leq itt rm leq pi','FontSize',16)ylabel('sin(t)','FontSize',20)title('正弦函数图形','FontName',' ⾪书' ,'FontSize',20)text(pi,sin(pi),'leftarrowsin(t)=0','FontSize',16)text(3*pi/4,sin(3*pi/4),'leftarrowsin(t)=0.707', 'FontSize',16)text(5*pi/4,sin(5*pi/4),' sin(t)=-0.707rightarrow',...'FontSize',16,'HorizontalAlignment','right')画出的图形为:0246-1-0.50.510 ≤ t ≤ πsin(t)正弦函数图形←sin(t)=0←sin(t)=0.707sin(t)=-0.707→5) 在图形中添加图例框:legend函数其调⽤格式为:A.legend('字符串1', '字符串2', ……)------以字符串1,字符串2…… 作38为图形标注的图例.B.legend('字符串1', '字符串2', ……, pos)------pos指定图例框显⽰的位置.图例框被预定了6个显⽰位置:0------ 取最佳位置;1------右上⾓(缺省值);2------左上⾓;3------左下⾓;4------右下⾓;-1------图的右侧.例:在图形中添加图例.x=0:pi/10:2*pi;y1=sin(x);y2=0.6*sin(x);y3=0.3*sin(x);plot(x,y1,x,y2,'-o',x,y3,'-*')legend('曲线1','曲线2','曲线3')绘出图形如下:02468-1-0.50.51曲线1曲线2曲线36)⽤⿏标点选屏幕上的点:ginput函数格式为: [x, y, button]=ginput(n)其中:n为所选择点的个数;x,y均为向量,x为所选n个点的横坐标;y为所选n个点的纵坐标.button为n维向量,是所选n个点所对应的⿏标键的标号:1------左键;2------中键;可⽤不同的⿏标键来选点,以区别所选的点.此语句可以放在绘图语句之后,它可在绘出的图形上操作,选择你所感兴趣的点,如峰值点,达到稳态值的点等,给出点的坐标,可求出系统的性能指标.39第四节 MATLAB下图形对象的修改MATLAB图形对象是指图形系统中最基本,最底层的单元,这些对象包括:屏幕(Root),图形窗⼝(Figures), 坐标轴(Axes),控件(Uicontrol),菜单(Uimenu),线(Lines),块(Patches),⾯(Surface),图像 (Images),⽂本(Text)等等.根据各对象的相互关系,可以构成如下所⽰的树状层次:RootFiguresAxes Uicontrol Uimenu Uicontextmenu (对象菜单)Images Line Patch Surface Text对各种图形对象进⾏修改和控制,要使⽤MATLAB的图形对象句柄(Handle).在MATLAB中, 每个图形对象创⽴时,就被赋予了唯⼀的标识,这个标识就是该对象的句柄.句柄的值可以是⼀个数,也可以是⼀个⽮量.如每个计算机的根对象只有⼀个,它的句柄总是0,图形窗⼝的句柄总是正整数,它标识了图形窗⼝的序号等.利⽤句柄可以操纵⼀个已经存在的图形对象的属性,特别是对指定图形对象句柄的操作不会影响同时存在的其它图形对象,这⼀点是⾮常重要的.⼀.对图形对象的修改可以⽤下⾯函数:1)set函数:⽤于设置句柄所指的图形对象的属性.Set函数的格式为:set(句柄, 属性名1, 属性值1, 属性名2, 属性值2, ……)例:h=plot(x,y)set(h, 'Color', [1,0,0])------将句柄所指曲线的颜⾊设为红⾊.2)get函数:获取指定句柄的图形对象指定属性的当前值.格式为:get(句柄, '属性名')如: get(gca, 'Xcolor')------获得X轴的当前颜⾊属性值.执⾏后可返回X轴的当前颜⾊属性值[0,0,0](⿊⾊).3)如果没有设置句柄,则可以使⽤下列函数获得:gcf:获得当前图形窗⼝的句柄;gca:获得当前坐标轴对象的句柄;gco:获得当前对象的句柄.如:A.要对图形窗⼝的底⾊进⾏修改,可⽤:set(gcf, 'Color', [1,1,1])------将图形窗⼝底⾊设为⽩⾊B.要把当前X轴的颜⾊改为绿⾊,可⽤:set(gca, 'Xcolor', [0,1,0])40C.还可对坐标轴的显⽰刻度进⾏定义:t=-pi:pi/20:pi;y=sin(t);plot(t,y)set(gca,'xtick',[-pi:pi/2:pi],'xticklabel',['-pi','-pi/2','0','pi/2','pi'])-pi-pi/20pi/2pi-1-0.50.51本例中⽤'xtick'属性设置x轴刻度的位置(从-pi~pi,间隔pi/2,共设置5个点),⽤'xticklabel'来指定刻度的值,由于通常习惯于⽤⾓度度量三⾓函数, 因此重新设置['-pi','-pi/2','0','pi/2','pi']5个刻度值.⼆.⼀些常⽤的属性如下:1)Box属性:决定图形坐标轴是否为⽅框形式,选项为'on'(有⽅框),'off'(⽆⽅框);2)'ColorOrder'属性:设置多条曲线的颜⾊顺序,默认值为:[1 1 0;1 0 1;0 1 1;1 0 0;0 1 0;0 0 1]黄⾊粉⾊天蓝红⾊绿⾊兰⾊颜⾊向量还有:[1 1 1]------⽩⾊;[0 0 0]------⿊⾊.3)坐标轴⽅向属性:'Xdir','Ydir','Zdir',其选项为:'normal'------正常'reverse'------反向4) 坐标轴颜⾊和线型属性:'Xcolor','Ycolor','Zcolor'------ 轴颜⾊,'LineWidth'------ 轴的线宽,值为数字'Xgrid','Ygrid','Zgrid'------坐标轴上是否加⽹格,值为'on'和'off'.5)坐标轴的标尺属性:'Xtick','Ytick','Ztick'------ 标度的位置,值为向量'Xticklabel','Yticklabel','Zticklabel'------ 轴上标度的符号,它的值为与标度位置向量同样⼤⼩(向量个数相同)的向量.5)字体设置属性:'FontAngle'------ 设置字体⾓度,选项为:41'normal'------ 正常;'italic'------ 斜体;'oblique'------ 倾斜;'FontName'------ 字体名称;'FontSize'------ 字号⼤⼩'FontWeight'------ 字体的轻重,选项为:'light','normal','bold'。
1、三维曲线>> t=0:pi/50:10*pi;>> plot3(sin(2*t),cos(2*t),t) >> axis square>> grid on2、一窗口多图形>> t=-2*pi:0.01:2*pi;>> subplot(3,2,1)>> plot(t,sin(t))>> subplot(3,2,2)>> plot(t,cos(t))>> subplot(3,2,3)>> plot(t,tan(t))>> axis([-pi pi -100 100]) >> subplot(3,2,4)>> plot(t,cot(t))>> axis([-pi pi -100 100]) >> subplot(3,2,5)>> plot(t,atan(t))>> subplot(3,2,6)>> plot(t,acot(t))3、图形样式、标注、题字(也可以利用菜单直接Insert)>> x=0:pi/20:2*pi;>> plot(x,sin(x),'b-.')>> hold on>> plot(x,cos(x),'r--')>> hold on>> plot(x,sin(x)-1,'g:')>> hold on>> plot(x,cos(x)-1)>> xlabel('x');>> xlabel('x轴');>> ylabel('y轴');>> title('图形样式、标注等');>> text(pi,sin(pi),'x=\pi');>> legend('sin(x)','cos(x)','sin(x)-1','cos(x)-1');>> [x1,y1]=ginput(1) %利用鼠标定位查找线上某点的值x1 =2.0893y1 =-0.5000>> gtext('x=2.5') %鼠标定位放置所需的值在线上4、>> fplot('[sin(x),cos(x),sqrt(x)-1]',[0 2*pi])M文件:myfun.m内容如下:function y=myfun(x)y(:,1)=sin(x);y(:,2)=cos(x);y(:,3)=x^(1/2)-1;再运行:>> fplot('myfun',[0 2*pi])同样可以得到下图5、>> [x,y]=fplot('sin',[0 2*pi]); >> [x1,y1]=fplot('cos',[0 2*pi]); >> plot(x,y,'-r',x1,y1,'-.k')>> legend('y=sinx','y=cosx')6、>> x=[-2:0.2:2];>> y=exp(x)-sin(x);>> plot(x,y,'-or','linewidth',2)7、画出y1=6(sinx-cosx),y2=x2^x-1的图形>> x=[-3:0.1:3];>> y1=6*(sin(x)-cos(x));>> y2=x.*2.^x-1;>> plot(x,y1,'-r',x,y2,'-.k','linewidth',2)8、绘制心形图r=2(1-cosθ)的极坐标图形>> theta=[0:0.01:2*pi];>> polar(theta,2*(1-cos(theta)),'-k')>> polar(theta,2*(1-cos(theta)),'-or')9、用双轴对数坐标绘制y=x*3^x-30的图形>> x=logspace(-3,3);>> y=x.*3.^x-30;>> loglog(y,'-or','linewidth',2);>> grid on10、绘制数据向量的单轴对数坐标图形>> x=[1:50];>> y=[1:50];>> semilogx(x,y,'-*b')%绘制横轴为对数坐标%纵轴为线性坐标>> grid on>> semilogy(x,y,'-*b')%绘制纵轴为对数坐标%横轴为线性坐标>> grid on11、绘制矩阵的条形图,并求出句柄属性值向量。
Matlab绘图强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。
此外,Matlab还提供了直接对图形句柄进行操作的低层绘图操作。
这类操作将图形的每个图形元素(如坐标轴、曲线、文字等)看做一个独立的对象,系统给每个对象分配一个句柄,可以通过句柄对该图形元素进行操作,而不影响其他部分。
本章介绍绘制二维和三维图形的高层绘图函数以及其他图形控制函数的使用方法,在此基础上,再介绍可以操作和控制各种图形对象的低层绘图操作。
一.二维绘图二维图形是将平面坐标上的数据点连接起来的平面图形。
可以采用不同的坐标系,如直角坐标、对数坐标、极坐标等。
二维图形的绘制是其他绘图操作的基础。
一.绘制二维曲线的基本函数在Matlab中,最基本而且应用最为广泛的绘图函数为plot,利用它可以在二维平面上绘制出不同的曲线。
1.plot函数的基本用法plot函数用于绘制二维平面上的线性坐标曲线图,要提供一组x坐标和对应的y坐标,可以绘制分别以x和y为横、纵坐标的二维曲线。
plot函数的应用格式plot(x,y) 其中x,y为长度相同的向量,存储x坐标和y坐标。
例51 在[0 , 2pi]区间,绘制曲线程序如下:在命令窗口中输入以下命令>> x=0:pi/100:2*pi;>> y=2*exp(-0.5*x).*sin(2*pi*x);>> plot(x,y)程序执行后,打开一个图形窗口,在其中绘制出如下曲线注意:指数函数和正弦函数之间要用点乘运算,因为二者是向量。
例52 绘制曲线这是以参数形式给出的曲线方程,只要给定参数向量,再分别求出x,y向量即可输出曲线:>> t=-pi:pi/100:pi;>> x=t.*cos(3*t);>> y=t.*sin(t).*sin(t);>> plot(x,y)程序执行后,打开一个图形窗口,在其中绘制出如下曲线以上提到plot函数的自变量x,y为长度相同的向量,这是最常见、最基本的用法。
matlab句柄函数Matlab中的句柄函数是一种可用于引用和操作其他函数或对象的函数类型。
它类似于指针,允许我们以更灵活的方式使用函数和对象。
句柄函数包含函数句柄和对象句柄。
1.函数句柄:函数句柄是指对函数的引用,而不是对函数进行调用。
通过函数句柄,我们可以将函数作为参数传递给其他函数,或者将函数存储在变量中以供以后使用。
创建函数句柄的语法是用@符号后跟函数名。
例如,假设我们有一个名为myFunc的函数,我们可以通过以下方式创建一个函数句柄:myFuncHandle = @myFunc接下来,我们可以通过调用函数句柄来调用myFunc函数,就像直接调用函数一样:result = myFuncHandle(input)函数句柄还可以与其他函数一起使用,例如在回调函数中使用。
回调函数是一种在特定事件发生时自动调用的函数,例如按钮点击或鼠标移动事件。
通过将函数句柄作为回调函数传递给GUI组件,我们可以指定事件发生时要调用的函数。
2.对象句柄:对象句柄是对对象的引用,而不是对对象的实例。
它允许我们对对象进行操作,并提供一种灵活的方式来传递和共享对象。
对象句柄的创建方式类似于函数句柄的创建方式,使用@符号后跟类名。
例如,假设我们有一个名为myObject的类,我们可以通过以下方式创建一个对象句柄:myObjectHandle = @myObject接下来,我们可以使用对象句柄来引用和操作myObject的实例。
例如,我们可以调用对象的方法,访问其属性等:myObjectHandle.methodName()myObjectHandle.propertyName对象句柄还可以用于传递对象作为参数,使得我们可以在不创建新对象的情况下共享对象的状态。
使用句柄函数可以实现许多有用的功能。
例如,它可以用于实现回调函数、函数指针、延迟计算和动态多态性。
通过将函数句柄作为参数传递给其他函数,我们可以实现更灵活和可扩展的代码。
MATLAB不但擅长於矩阵相关的数值运算,也适合用在各种科学目视表示(Scientific visualization)。
下面将介绍MATLAB基本xy平面及xyz空间的各项绘图命令,包含一维曲线及二维曲面的绘制、列印及存档。
plot是绘制一维曲线的基本函数,但在使用此函数之前,我们需先定义曲线上每一点的x及y座标。
下例可画出一条正弦曲线:close all; x=linspace(0, 2*pi, 100); % 100个点的x座标y=sin(x); % 对应的y座标plot(x,y);================================================== ==小整理:MATLAB基本绘图函数plot: x轴和y轴均为线性刻度(Linear scale)loglog: x轴和y轴均为对数刻度(Logarithmic scale)semilogx: x轴为对数刻度,y轴为线性刻度semilogy: x轴为线性刻度,y轴为对数刻度================================================== ==若要画出多条曲线,只需将座标对依次放入plot函数即可:plot(x, sin(x), x, cos(x));若要改变颜色,在座标对后面加上相关字串即可:plot(x, sin(x), 'c', x, cos(x), 'g');若要同时改变颜色及图线型态(Line style),也是在座标对后面加上相关字串即可:plot(x, sin(x), 'co', x, cos(x), 'g*');================================================== ==小整理:plot绘图函数的叁数字元颜色字元图线型态y 黄色 . 点k 黑色o 圆w 白色x xb 蓝色+ +g 绿色* *r 红色- 实线c 亮青色: 点线m 锰紫色-. 点虚线-- 虚线================================================== ==图形完成后,我们可用axis([xmin,xmax,ymin,ymax])函数来调整图轴的范围:axis([0, 6, -1.2, 1.2]);此外,MATLAB也可对图形加上各种注解与处理:xlabel('Input Value'); % x轴注解ylabel('Function Value'); % y轴注解title('Two Trigonometric Functions'); % 图形标题legend('y = sin(x)','y = cos(x)'); % 图形注解grid on; % 显示格线================================================== ==我们可用subplot来同时画出数个小图形於同一个视窗之中:subplot(2,2,1); plot(x, sin(x));subplot(2,2,2); plot(x, cos(x));subplot(2,2,3); plot(x, sinh(x));subplot(2,2,4); plot(x, cosh(x));MATLAB还有其他各种二维绘图函数,以适合不同的应用,详见下表。
matlab函数句柄@的介绍_什么是函数句柄(转)----------------------------------------------------------------------------------------------这个是matlab⾥边的匿名函数的标志。
匿名函数的标准格式是:fhandle=@(arglist)express(1)express是⼀个matlab变量表达式,⽐如:x+x.^2,sin(x)等(2)argilst是参数列表;(3)符号@是matlab创建函数句柄的操作符,表⽰创建有输⼊参数列表arglist和表达式express确定的函数句柄,并把这个函数句柄返回给变量fhandle,这样,以后就可以通过fhandle来调⽤定义好的函数了。
如:myfun=@(x)(x+x.^2)------------------------------------------------------------------------------------------------------------------------------------------觉得⾃⼰很少⽤函数句柄,但是经常遇到,所以在这⾥总结⼀下。
函数句柄:是包含了函数的路径、函数名、类型以及可能存在的重载⽅法。
函数句柄必须通过专门的定义创建的,⽽⼀般的图像的句柄是⾃动建⽴的。
创建函数句柄使⽤@或者str2func命令创建[email=h_fun=@fun]h_fun=@fun[/email];h_fun=str2func('fun');⽐如说sin函数,[email=h_sin=@sin]h_sin=@sin[/email]; h_sin=str2func('sin');执⾏sin函数 fevalfeval('sin',pi/2)ans =1那么使⽤函数句柄有什么好处呢?1、提⾼运⾏速度。
Matlab绘图函数⼀览 要查看Matlab所有绘图函数,请从Matlab主界⾯菜单查看“绘图⽬录”,或从Matlab帮助⽂档查看“Types of MATLAB Plots”()。
本⽂的图和英⽂解释摘⾃Matlab帮助⽂档。
类别Function图维度描述曲线plot2绘制曲线,相邻点之间被插值fplot输⼊函数或函数句柄、⾃变量取值区间,绘制曲线plotyy2双纵坐标图,两个纵坐标的数量级不同plot33绘制3D曲线loglog2X,Y坐标都按对数缩放semilogx2仅X坐标按对数缩放semilogy2仅Y左边按对数缩放errorbar2误差条形图,见条形直⽅⾯域bar2条形图(垂直),分为grouped和stacked风格bar333D条形图(垂直)barh2⽔平条形图,分为grouped和stacked风格bar3h33D⽔平条形图hist2频数直⽅图histc输⼊数据和区间,返回数据落在每个区间的频数pareto2帕累托图(柏拉图),见area2填充区域图,曲线和X轴之间被填充pie2饼图,⽤于表⽰⽐例pie333D饼图极坐标polar2极坐标图,以极坐标绘制曲线rose2⾓直⽅图(频数扇形图)离散数据stem2杆图,对每个数据,从X轴伸出⼀条垂直线,顶端画圆圈stem333D杆图stairs2阶梯图,相邻点间不进⾏插值scatter2散点图(⽓泡图),绘制⼀系列散点scatter333D散点图spy2稀疏模式(sparsity pattern)图,对矩阵⾮0的地⽅绘制散点plotmatrix2将矩阵绘制为散点图或散点图和直⽅图等⾼线contour2等⾼线图,⼆维函数的等值线contour333D等⾼线图,三维函数(空间函数)的等值线contourf2填充的等⾼线图contourf2填充的等⾼线图contourc等⾼线计算曲⾯⽹格surf3曲⾯图,和mesh的区别是,surf在⼩矩形上做颜⾊插值surfl3在surf基础上,加⼊光照surfc3在surf基础上,在底部绘制等⾼线图surfnorm3在surf基础上,每个⾯绘制法线surface低层次曲⾯绘制函数mesh3⽹格图,在⾏和列上绘制⼀系列曲线,构成⽹格meshc3在mesh基础上,在底部绘制等⾼线图meshz3在mesh基础上,在⽹格四周绘制“帘⼦”waterfall3瀑布图,类似于meshz函数,但在矩阵的列之间不⽣成线ribbon3带图,绘制⼀定宽度的带,相当于将⼆维曲线沿着垂直平⾯⽅向拉开⼀定宽度形成三维图形pcolor2伪彩图,根据矩阵的“相邻四个点”的值对应颜⾊插值得到⼩矩形颜⾊peaks Example function of two variablescylinder Generate cylinderellipsoid Generate ellipsoidsphere Generate spheresurf2patch Convert surface data to patch data标量场体数据slice3体积切⽚图,对体数据进⾏切⽚观察contour-slice3切⽚等⾼线图,体数据在切⽚平⾯中的等值线flow Simple function of three variables isosurface Extract isosurface data from volume data isocaps Compute isosurface end-cap geometry isocolors Calculate isosurface and patch colors isonormals Compute normals of isosurface verticesreduce-patchReduce number of patch facesreduce-volume Reduce number of elements in volume data set shrinkfaces Reduce size of patch facessmooth3Smooth 3-D datasubvolume Extract subset of volume data setvolumeboundsCoordinate and color limits for volume data feather2⽻状图,以X轴上的点为起点绘制⼀系列向量向量场体向量数据compass2射线图,以原点为起点绘制⼀系列向量quiver2⽮量场图,以采样点为起点绘制⼀系列向量quiver333D⽮量场图streamslice3绘制流场(三维向量函数)在切⽚平⾯中的流线streamline3绘制流场的流线(类似于磁感线),起点由数据指定coneplot3绘制三维圆锥,圆锥的起点由数据指定,⽅向和⼤⼩由流场指定stream-particles3绘制流场marker粒⼦stream-ribbon3绘制流场ribbon图streamtube3绘制流场流管curl Compute curl and angular velocity of vector field divergence Compute divergence of vector fieldinterp-stream-speedInterpolate stream-line vertices from flow speedstream2Compute 2-D streamline datastream3Compute 3-D streamline data多边形fill2绘制填充的多边形fill333D填充多边形patch2,3绘制⼀个或多个填充多边形Easy-to-use ezplot2Easy-to-use版绘图函数,这类函数传⼊要绘制的函数或函数句柄,以及⾃变量的定义域,调⽤具体函数绘图。
Matlab 编程技巧Matlab注释技巧1. m文件如果是函数,保存的文件名最好与函数名一致,这点都很清楚。
不过容易疏忽的是,m文件名的命名尽量不要是简单的英文单词,最好是由大小写英文/数字/下划线等组成。
原因是简单的单词命名容易与matlab内部函数名同名,结果会出现一些莫名其妙的错误。
例如,写个m文件,命名为spy,运行时就弹出一个怪怪的figure,呵呵,我当初还以为是什么bug。
2. 调试程序时,经常要屏蔽掉一整段程序进行,也就是将其标示注释符%。
有两个办法:一种是选定后 ctrl+r和ctrl+t 一种是在段首加 if 0 ,段尾加 end,中间都不执行,也就相当于注释掉了3. 写m文件时,选中某段程序内容,ctrl+i 让matlab帮你自动对齐程序。
这样程序看起来很有层次,容易发现程序中的错误。
4. ctrl+F2作标签,ctrl+g 跳至某一行,这些快捷键都很实用。
5 matlab7中有块注释符号%{ 和 %}6 多行加标注时,也可以选中需要添加标注程序,然后在Edit中/或者右键选择Comment。
或者Uncomment除掉标注MATLAB中的一些小技巧1. Ctrl+C 中断正在执行的操作如果程序不小心进入死循环,或者计算时间太长,可以在命令窗口中使用Ctrl+c 来中断。
MATLAB这时可能正疲于应付,响应会有些滞后。
2. figure命令新建一个绘图窗口figure 可以打开一个空的绘图窗口,接下的绘图命令可以将图画在它里面,而不会覆盖以前的绘图窗口。
当有多个figure窗口时,在命令窗口中执行如Plot 等命令将覆盖当前figure窗口中的对象。
所谓的当前figure窗口,也就是最后一次查看的窗口(可以用命令gcf得到)。
figure(N),将编号为N的窗口置为当前figure,出现在所有窗口的最前面,如果该窗口不存在,则新建一个编号为N的空白figure。
3. 注释掉一段程序:%{、%}。