1、Matlab基础基础MATLAB作为线性系统的一种分析和仿真工具,是大学生应该掌握的技术工具,它作为一种编程语言和可视化工具,可解决工程工程、科学计算科学计算和数数学学科学学科中许多问题。MATLAB建立在向量向量、数组数组和矩阵矩阵的基础上,使用方便,人机界面直观,输出结果可视化。矩阵矩阵是MATLAB的核心 MATLAB的运行方式(两种)一、变一、变 量量 与与 函函 数数二、数二、数 组组三、矩三、矩 阵阵四、逻辑运算及控制流四、逻辑运算及控制流五、五、Matlab作图作图 1、变量、变量 MATLAB中变量的命名规则命名规则是:(1)变量名必须是不含空格的单个词;(2)变量名区分大小写
2、;(3)变量名最多不超过32个字符;(4)变量名必须以字母打头,之后可以是任意字母、数字或下划线,变量名中不允许使用标点符号.一、变一、变 量量 与与 函函 数数特殊变量表特殊变量表2、数学运算符号及标点符号、数学运算符号及标点符号+加法运算,适用于两个数或两个同阶矩阵相加.减法运算*乘法运算.*点乘运算/除法运算./点除运算乘幂运算.点乘幂运算反斜杠表示左除.(1)MATLAB的每条命令后,若为逗号逗号或或无标点无标点符号,则显示命令的结果;若命令后为分号分号,则禁止显示结果.(2)“%”后面所有文字为注释.(3)“.”表示续行.3、数学函数、数学函数 MATLAB的内部函数是有限的,有时为
3、了研究某一个函数的各种性态,需要为MATLAB定义新函数,为此必须编写函数文件.函数文件是文件名后缀为M的文件,这类文件的第一行必须是一特殊字符function开始,格式为:function 因变量名=函数名(自变量名)函数值的获得必须通过具体的运算实现,并赋给因变量.4、M文件文件说明:说明:Matlab的应用程序也以的应用程序也以M文件保存。文件保存。1.在在Matlab中,点中,点:File-New-M-file;2.在编辑窗口中输入程序内容在编辑窗口中输入程序内容3.点:点:File-Save,存盘,存盘,M文件名必须与函文件名必须与函数名一致。数名一致。例:定义函数例:定义函数 f(
4、x1,x2)=100(x2-x12)2+(1-x1)2function f=fun(x)f=100*(x(2)-x(1)2)2+(1-x(1)2;1.建立建立M文件:文件:fun.m2.可以直接使用函数可以直接使用函数fun.m例如:计算例如:计算 f(1,2),只需在只需在Matlab命令窗口键入命令:命令窗口键入命令:x=1,2fun(x)结合软件介绍。结合软件介绍。重点:断点设置和调试。重点:断点设置和调试。(1)Matlab主菜单及功能 File,Edit,Debug,Desktop,Window,Help(2)Matlab命令窗口5、Matlab桌面桌面(3)Matlab工作空间常用
5、操作命令及功能(4)Matlab文件管理常用命令(5)Matlab帮助使用命令功能who显示当前工作空间中所有变量的简单列表whos列出变量的大小,数据格式等详细信息clear清除工作空间中的所有变量clear 变量名清除指定的变量load从磁盘文件中恢复变量save保存工作空间变量pack整理工作空间内存size(变量名)显示当前工作空间中变量的尺寸length(变量名)显示当前工作空间中变量的长度disp(变量名)显示当前工作空间中变量quit或exit退出工作空间命令功能what显示当前目录下所有与Matlab相关的文件及其路径dir显示当前目录下所有的文件which显示某个文件的路径c
6、d path由当前目录进入path目录type filename在命令窗口中显示文件filenamedelete filename删除文件filenamecd.返回上一级目录cd显示当前目录1、创建简单的数组、创建简单的数组二、数二、数 组组x=a b c d e f 创建包含指定元素的行向量x=first:last 创建从first开始,加1计数,到last结束的行向量注意:这里各个元素之间可用空格分开,也可用逗号分开,即x=a,b,c,d,e,f ,且各个标点符号需在英文状态下输入。x=logspace(a,b,n)创建从10a开始,到10b结束,有n个元素的对数分隔行向量.x=first
7、:increment:last 创建从first开始,加increment计数,last结束的行向量。x=linspace(first,last,n)创建从first开始,到last结束,有n个元素的行向量。2、数组元素的访问数组元素的访问(3)直接使用元素编址序号直接使用元素编址序号.x(a b c d)表示提取数组x的第a、b、c、d个元素构成一个新的数组x(a)x(b)x(c)x(d).eg.x=1,2,3,4,5,6;y=x(1,3,5)(2)访问一块元素访问一块元素:x(a:b:c)表示访问数组x的从第a个元素开始,以步长为b到第c个元素(但不超过c),b可以为负数,b缺损时为1.e
8、g.x=1,2,3,4,5,6;y=x(1:2:6)(1)访问一个元素访问一个元素:x(i)表示访问数组x的第i个元素.3 3、数组的方向、数组的方向 前面例子中的数组都是一行数列,是行方向分布的.称之为行向量.数组也可以是列向量,它的数组操作和运算与行向量是一样的,唯一的区别是结果以列形式显示.产生列向量有两种方法:直接产生 例 c=1;2;3;4 转置产生 例 b=1 2 3 4;c=b 说明:以空格或逗号分隔的元素指定的是不同列的元素,而以分号分隔的元素指定了不同行的元素.4、数组的运算、数组的运算 (1)标量)标量-数组运算数组运算 数组对标量的加、减、乘、除、乘方是数组的每个元素对该
9、标量施加相应的加、减、乘、除、乘方运算.设:设:a=a1,a2,an,c=标量标量则:则:a+c=a1+c,a2+c,an+c a.*c=a1*c,a2*c,an*c a./c=a1/c,a2/c,an/c(右除)右除)a.c=c/a1,c/a2,c/an(左除)左除)a.c=a1c,a2c,anc c.a=ca1,ca2,can eg.a=1,2,3,4,5,6;c=2;a+ca.*ca./ca.ca.cc.a(2)数组数组-数组运算数组运算 当两个数组有相同维数时,加、减、乘、除、幂运算可按元素对元素方式进行的,不同大小或维数的数组是不能进行运算的.设:设:a=a1,a2,an,b=b1,
10、b2,bn则:则:a+b=a1+b1,a2+b2,an+bn a.*b=a1*b1,a2*b2,an*bn a./b=a1/b1,a2/b2,an/bn a.b=b1/a1,b2/a2,bn/an a.b=a1b1,a2b2,anbn(3)常用的数组操作函数)常用的数组操作函数 三、三、矩矩 阵阵 逗号逗号或或空格空格用于分隔某一行的元素,用于分隔某一行的元素,分号分号用于区用于区分不同的行分不同的行.除了分号,在输入矩阵时,按除了分号,在输入矩阵时,按Enter+Shift键也表示开始一新行键也表示开始一新行.输入矩阵时,严格输入矩阵时,严格要求所有行有相同的列要求所有行有相同的列.例例 m
11、=1 2 3 4;5 6 7 8;9 10 11 12 p=1 1 1 1 2 2 2 2 3 3 3 31、矩阵的建立、矩阵的建立特殊矩阵特殊矩阵的建立:E=eye(m,n)产生一个产生一个m行、行、n列的单位矩阵列的单位矩阵D=ones(m,n)产生一个产生一个m行、行、n列元素全为列元素全为1的矩阵的矩阵C=zeros(m,n)产生一个产生一个m行、行、n列的零矩阵列的零矩阵A=产生一个空矩阵(空矩阵的大小为零)产生一个空矩阵(空矩阵的大小为零)F=diag(x,k)创建一个主对角元对应于数组创建一个主对角元对应于数组x的对角矩阵的对角矩阵f=diag(X,k)提取二维矩阵提取二维矩阵X
12、的第的第k条对角线元素组成的条对角线元素组成的一维矩阵一维矩阵B=rand(m,n)产生一个产生一个m行、行、n列的随机矩阵列的随机矩阵2、矩阵中元素的操作、矩阵中元素的操作(1)矩阵)矩阵A的第的第r行:行:A(r,:),:)(2)矩阵)矩阵A的第的第r列:列:A(:,(:,r)(4)取矩阵)取矩阵A的第的第i1i2行、第行、第j1j2列构成新矩阵列构成新矩阵:A(i1:i2,j1:j2)(5)以逆序提取矩阵)以逆序提取矩阵A的第的第i1i2行,构成新矩阵行,构成新矩阵:A(i2:-1:i1,:),:)(6)以逆序提取矩阵)以逆序提取矩阵A的第的第j1j2列,构成新矩阵列,构成新矩阵:A(:
13、,j2:-1:j1)(7)删除)删除A的第的第i1i2行,构成新矩阵行,构成新矩阵:A(i1:i2,:,:)=(8)删除)删除A的第的第j1j2列,构成新矩阵列,构成新矩阵:A(:,:,j1:j2)=(9)将矩阵)将矩阵A和和B拼接成新矩阵:拼接成新矩阵:A B;A;B(3)依次提取矩阵)依次提取矩阵A的每一列,将的每一列,将A拉伸为一个列向量:拉伸为一个列向量:A(:)(:)(2)矩阵矩阵-矩阵运算矩阵运算 3、矩阵的运算、矩阵的运算(1)标量)标量-矩阵运算矩阵运算 2矩阵运算:矩阵运算:矩阵加法:矩阵加法:A+B矩阵乘法:矩阵乘法:A*B方阵的行列式:方阵的行列式:det(A)方阵的逆:
14、方阵的逆:inv(A)方阵的特征值与特征向量:方阵的特征值与特征向量:V,D=eigA1 元素对元素的运算,同数组元素对元素的运算,同数组-数组运算。数组运算。同标量同标量-数组运算。数组运算。练习:练习:3.对上题中对上题中A求出其特征值及特征向量。求出其特征值及特征向量。4、常见的矩阵操作、常见的矩阵操作(1)矩阵索引与寻址)矩阵索引与寻址 1数字索引方式数字索引方式 A(m)%单下标索引访问矩阵第单下标索引访问矩阵第m个元素个元素 A(m,n)%双下标索引访问矩阵第双下标索引访问矩阵第m行第行第n列的元素列的元素 A(m:n)%单下标索引访问矩阵第单下标索引访问矩阵第m到第到第n个元素个
15、元素 A(m1:m2,n1:n2)%双下标索引访问矩阵第双下标索引访问矩阵第m1至至m2行,第行,第n1至至n2列的元素列的元素 A(m1,m2,n1,n2,)%双下标索引访问矩阵第双下标索引访问矩阵第m1,m2,行,第行,第n1,n2,列的元素列的元素2单下标索引和双下标索引的转换单下标索引和双下标索引的转换 IND=sub2ind(siz,I,J)%单转双单转双 I,J=ind2sub(siz,IND)%双转单双转单(2)逻辑索引方式)逻辑索引方式 可通过下面一段程序了解其用法:可通过下面一段程序了解其用法:A=rand(5)B=A0.8%通过比较关系运算产生逻辑索引通过比较关系运算产生逻
16、辑索引A(B)=0 通过逻辑索引访问原矩阵元素,并重新赋值通过逻辑索引访问原矩阵元素,并重新赋值(3)索引扩展)索引扩展若对超出矩阵范围的元素赋值,则默认扩展至该元素,若对超出矩阵范围的元素赋值,则默认扩展至该元素,且补充元素默认赋值为且补充元素默认赋值为0,可通过下例了解,可通过下例了解A=eye(3)A(4,6)=25(4)矩阵翻转)矩阵翻转 函数及语法说明fliplr(A)左右翻转Aflipud(A)上下翻转Aflipdim(A,k)按k指定的方向翻转Arot90(A,k)逆时针k*90度翻转A(5)矩阵查找)矩阵查找 可通过下面一段程序了解此用法:可通过下面一段程序了解此用法:A=ra
17、nd(3,5)B=(A0.3)&(A0.5)C=find(B)%查找逻辑矩阵中的非零元素,返回复合关系的元素索查找逻辑矩阵中的非零元素,返回复合关系的元素索 引单下标引单下标A(C)%实现元素访问实现元素访问(6)矩阵排序)矩阵排序 练习:练习:A=rand(1,8)sort(A)B,I=sort(A,descend)A(I)C=rand(3,6)sort(C)D,I=sort(C,2)C(I)B,IX=sort(A,dim,mode)%dim代表指定方向,代表指定方向,dim=1表示对每列排序,表示对每列排序,dim=2表示对每表示对每行排序,缺省时默认为行排序,缺省时默认为1%mode代表
18、排序模式,代表排序模式,mode=asend时为升序,时为升序,mode=descend时为降序时为降序%IX为排序后各元素在原矩阵中的行位置或列位置的索引为排序后各元素在原矩阵中的行位置或列位置的索引(7)多维矩阵)多维矩阵 练习:通过下面的小段程序体会其操作练习:通过下面的小段程序体会其操作A=randn(2,5,2)sum(A)sin(A)eig(A(:,1 2,1)A=ones(3,3,4)表示什么?表示什么?B=eye(3,3,4,2)又表示什么?又表示什么?四、逻辑运算及控制流四、逻辑运算及控制流 1、逻辑运算(、逻辑运算(1)关系操作符)关系操作符关关系系操操作作符符说说明明小小
19、于于大大于于=大大于于或或等等于于=等等于于=不不等等于于(2)逻辑运算符)逻辑运算符逻辑操作符逻辑操作符说明说明与与或或非非2、控制流、控制流MATLAB提供以下几种决策或控制流结构:提供以下几种决策或控制流结构:for循环、循环、while循环、循环、if-else-end结构、结构、swich-case-otherwise结构、结构、continue语句语句(直接进直接进入下次循环入下次循环)、break语句语句(退出循环退出循环)、try-catch-end结构结构(错误控制错误控制)、retune语句语句(程序终止程序终止).这些结构经常包含大量的这些结构经常包含大量的MATLAB命
20、令,命令,故经常出现在故经常出现在MATLAB程序中,而不是直接加在程序中,而不是直接加在MATLAB提示符下提示符下.(1)for循环:允许一组命令以固定的和预定的次数循环:允许一组命令以固定的和预定的次数重复重复 for x=array commands end在在for和和end语句之间的命令串语句之间的命令串commands按数组(按数组(array)中的每一列执行一次中的每一列执行一次.在每一次迭代中,在每一次迭代中,x被指被指定为数组的下一列,即在第定为数组的下一列,即在第n次循环中,次循环中,x=array(:,n)。eg.求求n=3,6,9,12时时n!的值,要求对应详细说明输
21、出。的值,要求对应详细说明输出。while expression commands end 只要在表达式只要在表达式(expression)里的所有元素为真,就里的所有元素为真,就执行执行while和和end语句之间的命令串语句之间的命令串commands.2、While循环循环 与与for循环以固定次数求一组命令相反,循环以固定次数求一组命令相反,while循环循环以不定的次数求一组语句的值以不定的次数求一组语句的值.eg.设银行年利率为设银行年利率为11.25%。将。将10000元钱存入银元钱存入银行,问多长时间会连本带利翻一番?行,问多长时间会连本带利翻一番?3、if-elseif-en
22、d结构结构(1)有一个选择的一般形式是:)有一个选择的一般形式是:if expression commands end 如果在表达式如果在表达式(expression)里的所有元素为真,里的所有元素为真,就执行就执行if和和end语句之间的命令串语句之间的命令串commands.)1(),2(,1211)(2ffxxxxxf求设例 先建立先建立M文件文件fun1.m定义函数定义函数f(x),再在),再在Matlab命令命令窗口输入窗口输入fun1(2),fun1(-1)即可。即可。2)有三个或更多的选择的一般形式是:有三个或更多的选择的一般形式是:if (expression1)command
23、s1 elseif (expression2)commands2 elseif (expression3)commands3 elseif else commands end)1(),5.0(),2(,0 x1x021x1xf(x)32fffxx求设例 先建立先建立M文件文件fun2.m定义函数定义函数f(x),再在),再在Matlab命令窗口输入命令窗口输入fun2(2),fun2(0.5),fun2(-1)即即可。可。练习:练习:用此结构编写输入年份判断是否闰年的程序。用此结构编写输入年份判断是否闰年的程序。对以下问题对以下问题,编写编写M文件文件:(1)用起泡法对用起泡法对10个数由小到
24、大排序个数由小到大排序.即将相即将相邻两个数比较邻两个数比较,将小的调到前头将小的调到前头.(2)有一个有一个 矩阵矩阵,编程求出其最大值及其编程求出其最大值及其所处的位置所处的位置.(3)编程求编程求54101!nn实验练习实验练习1.二维图形二维图形2.三维图形三维图形3.图形处理图形处理4.特殊二、三维图形特殊二、三维图形Matlab作图是通过描点、连线来实现的,故在画一个曲线图形之前,必须先取得该图形上的一系列的点的坐标(即横坐标和纵坐标),然后将该点集的坐标传给Matlab函数画图.命令为:plot(X,Y,Splot(X,Y,S)X,Y是向量,分别表示点集的横坐标和纵坐标线型(1)
25、二维曲线图)二维曲线图线型线型说明说明标记符标记符说明说明颜色颜色说明说明-实线实线(默认默认)+加号符加号符r r红色红色-双划线双划线o o空心圆空心圆g g绿色绿色:虚线虚线*星号星号b b蓝色蓝色:.:.点划线点划线.实心圆实心圆c c青绿色青绿色x x叉号符叉号符m m洋红色洋红色s s正方形正方形y y黄色黄色d d菱形菱形k k黑色黑色 上三角形上三角形w w白色白色v v下三角形下三角形 右三角形右三角形左三角形左三角形p p五角星五角星h h六边形六边形plot绘图中线宽和标记点格式设置:plot(X,Y)画实线plot(X,Y1,S1,X,Y2,S2,X,Yn,Sn)将多条
26、线画在一起PropertyName意义选项LineWidth线宽数值,如1MarkerEdgeColor标记点边框线条颜色 颜色字符,如bMarkerFaceColor标记点内部填充颜色 颜色字符MarkerSize标记点大小数值例:5:0.5:5;5.*exp().*sin();(,1.5,.ker,ker,ker,10)xyabs xxplot x yhrLineWidthMarEdgeColorbMarFaceColormMarSize 例 在在0,20,2*pipi用红线画用红线画sin(x),sin(x),用绿圈画用绿圈画cos(xcos(x).).x=linspace(0,2*pi
27、,30);y=sin(x);z=cos(x);plot(x,y,r,x,z,go)解解练习 在同一个窗口中用不同颜色不同模式画出sin(x),sin(2x),sin(3x)的图形。(2)符号函数符号函数(显函数、隐函数和参数方程显函数、隐函数和参数方程)画图画图1)ezplotezplot(x(t),y(t),tmin,tmax)表示在区间tminttmax绘制参数方程x=x(t),y=y(t)的函数图ezplot(f(x),a,b)表示在axb绘制显函数f=f(x)的函数图ezplot(f(x,y),xmin,xmax,ymin,ymax)表示在区间xminxxmax和 yminyymax绘
28、制隐函数f(x,y)=0的函数图例例 在0,pi上画y=cos(x)的图形解 输入命令 ezplot(sin(x),0,pi)解 输入命令 ezplot(cos(t)3,sin(t)3,0.2*pi)解 输入命令ezplot(exp(x)+sin(x*y),-2,0.5,0,2)例例例例2)fplotNOTE:1 fun必须是必须是M文件的函数名或是独立变量为文件的函数名或是独立变量为x的的字符串字符串.2 fplot函数不能画参数方程和隐函数图形,但函数不能画参数方程和隐函数图形,但在一个图上可以画多个图形。在一个图上可以画多个图形。fplot(fun,limsfplot(fun,lims)
29、表示绘制字符串fun指定的函数在lims=xmin,xmax的图形.注:其中fun是用m文件写好的函数,同时要说明的是虽然fplot也是一元函数作图函数,但是不同的是fplot采用自适应步长控制来画出函数fun的示意图,在函数的变化激烈的区间,采用小的步长,否则采用大的步长,可以使图形尽可能精确,但缺点是需要写m文件函数,不能画隐函数和参数方程所表示的函数。2)fplotNOTE3fplot(fun,limsfplot(fun,lims)表示绘制字符串fun指定的函数在lims=xmin,xmax的图形.2)fplot1sinx2,100例 画出在上的图形。解解 先用fun.m来写好函数,命令
30、如下function f=fun(x)f=sin(1/x);然后运行以下命令:fplot(fun,pi/100,2/pi)图形如图7所示。解解 先建M文件myfun1.m:function Y=myfun1(x)Y=exp(2*x)+sin(3*x.2)再输入命令:fplot(myfun1,-1,2)解解 输入命令:fplot(tanh(x),sin(x),cos(x),2*pi*-1 1 1 1)例例 在-2,2范围内绘制函数tanh的图形解解 fplot(tanh,-2,2)(3)对数坐标图对数坐标图 在很多实际问题中,通过对数据进行对数转换可以更清晰地看出数据的某些特征,在对数坐标系中描
31、绘数据点的曲线,可以直接地表现对数转换.对数转换有双对数坐标转换和单轴对数坐标转换两种.用loglog函数可以实现双对数坐标转换,用semilogx和semilogy函数可以实现单轴对数坐标转换.loglog(Y)表示 x、y坐标都是对数坐标系semilogx(Y)表示 x坐标轴是对数坐标系semilogy()表示y坐标轴是对数坐标系plotyy 有两个y坐标轴,一个在左边,一个在右边例例 用方形标记创建一个简单的loglog解解 输入命令:x=logspace(-1,2);loglog(x,exp(x),-s)grid on%标注格栅例例 创建一个简单的半对数坐标图例例 绘制y=x3的函数图
32、、对数坐标图、半对数坐标图解解 输入命令:x=logspace(-1,2);plot(x,x.3),grid on loglog(x,x.3,ro)semilogx(x,x.3,g+)解解 输入命令:x=0:.1:10;semilogy(x,10.x)(1)空间曲线)空间曲线(2)空间曲面)空间曲面plot3(x,y,z,s)(1)空空 间间 曲曲 线线 1)一条曲线一条曲线 例例 在区间在区间0,10*pi画出参数曲线画出参数曲线 x=sin(t),y=cos(t),z=t.解解 t=0:pi/50:10*pi;plot3(sin(t),cos(t),t)rotate3d%旋转旋转n维向量,
33、分别表示曲线上点集的横坐标、纵坐标、函数值指定颜色、线形等 plot3(x,y,z)2)多条曲线多条曲线例例 画多条曲线观察函数画多条曲线观察函数Z=(X+Y).2.(这里这里meshgrid(x,y)的作用是产生一个以向量的作用是产生一个以向量x为行、以为行、以向量向量y为列的矩阵)为列的矩阵)其中其中x,y,z是都是是都是m*n矩阵,其对应的每一列表示一条曲线矩阵,其对应的每一列表示一条曲线.解解 x=-3:0.1:3;y=1:0.1:5;X,Y=meshgrid(x,y);Z=(X+Y).2;plot3(X,Y,Z)(2)空)空 间间 曲曲 面面例例 画函数画函数Z=(X+Y).2的图形
34、的图形.解解 x=-3:0.1:3;y=1:0.1:5;X,Y=meshgrid(x,y);Z=(X+Y).2;surf(X,Y,Z)shading flat%将当前图形变得平滑将当前图形变得平滑1)surf(x,y,z)画出数据点(x,y,z)表示的曲面数据矩阵。分别表示数据点的横坐标、纵坐标、函数值2)mesh(x,y,z)解解 x=-3:0.1:3;y=1:0.1:5;X,Y=meshgrid(x,y);Z=(X+Y).2;mesh(X,Y,Z)例例 画出曲面画出曲面Z=(X+Y).2在不同视角的网格图在不同视角的网格图.画网格曲面画网格曲面数据矩阵。分别表示数据点的横坐标、纵坐标、函数
35、值3)meshz(X,Y,Z)在网格周围画一个在网格周围画一个curtain图图解解 输入命令输入命令:X,Y=meshgrid(-3:.125:3);Z=peaks(X,Y);meshz(X,Y,Z)例例 绘绘peaks的网格图的网格图4)函数曲面作图函数曲面作图ezsurf(fun,domain)(ezmesh(fun,domain))%在指定范围内绘制函数在指定范围内绘制函数fun的曲面图(网格曲面图),的曲面图(网格曲面图),domain可缺省可缺省ezsurf(funx,funy,funz,min,max)%在参数方程下绘制三维曲面图,在参数方程下绘制三维曲面图,ezmesh类同类同
36、 解解例例 画出画出环面 (1 cos)cos(1 cos)sinsinxuvyuvzu的网格曲面图。的网格曲面图。figureezsurf(1+cos(u)*cos(v),(1+cos(u)*sin(v),sin(u),0,2*pi,0,2*pi)在图形上加格栅、图例和标注在图形上加格栅、图例和标注定制坐标定制坐标图形保持图形保持分割窗口分割窗口缩放图形缩放图形改变视角改变视角3图形处理动动 画画(1)在图形上加格栅、图例和标注在图形上加格栅、图例和标注1)grid on 加格栅在当前图上 grid off 删除格栅2)hh=xlabel(string)在当前图形的x轴上加图例stringh
37、h=ylabel(string)在当前图形的y轴上加图例stringhh=title(string)在当前图形的顶端上加图例stringhh=zlabel(string)在当前图形的z轴上加图例string例例 在区间在区间0,2*pi画画sin(x)的图形,并加注图例的图形,并加注图例“自变量自变量 X”、“函数函数Y”、“示意图示意图”,并加格栅并加格栅.解解 x=linspace(0,2*pi,30);y=sin(x);plot(x,y)xlabel(自变量自变量X)ylabel(函数函数Y)title(示意图示意图)grid on3)hh=gtext(string)命令gtext(st
38、ring)用鼠标放置标注在现有的图上.运行命令gtext(string)时,屏幕上出现当前图形,在图形上出现一个交叉的十字,该十字随鼠标的移动移动,当按下鼠标左键时,该标注string放在当前十交叉的位置.例例 在区间在区间0,2*pi画画sin(x),并分别标注并分别标注“sin(x)”,”cos(x)”.解解 x=linspace(0,2*pi,30);y=sin(x);z=cos(x);plot(x,y,x,z)gtext(sin(x);gtext(cos(x)(2)定制坐标定制坐标Axis(xmin xmax ymin ymax zmin zmax)例例 在区间在区间0.005,0.0
39、1显示显示sin(1/x)的图形。的图形。解解 x=linspace(0.0001,0.01,1000);y=sin(1./x);plot(x,y)axis(0.005 0.01 1 1)定制图形坐标将坐标轴返回到自动缺省值Axis autox、y、z的最大、最小值(3)图形保持图形保持 1)hold on hold off例例 将将y=sin(x)、y=cos(x)分别用点和线画出在同一屏幕上。分别用点和线画出在同一屏幕上。解解 x=linspace(0,2*pi,30);y=sin(x);z=cos(x);plot(x,z)hold on plot(x,y)保持当前图形保持当前图形,以便继
40、续画图到当前图上以便继续画图到当前图上释放当前图形窗口释放当前图形窗口2)figure(h)例例 区间区间0,2*pi新建两个窗口新建两个窗口分别画出分别画出y=sin(x)和和z=cos(x)。解解 x=linspace(0,2*pi,100);y=sin(x);z=cos(x);plot(x,y);title(sin(x);pause figure(2);plot(x,z);title(cos(x);新建h窗口,激活图形使其可见,并把它置于其它图形之上(4)分割窗口)分割窗口h=subplot(mrows,ncols,thisplot)划分整个作图区域为mrows*ncols块(逐行对块访
41、问)并激活第thisplot块,其后的作图语句将图形画在该块上。激活已划分为mrows*ncols块的屏幕中的第thisplot块,其后的作图语句将图形画在该块上。命令Subplot(1,1,1)返回非分割状态。subplot(mrows,ncols,thisplot)subplot(1,1,1)解解 x=linspace(0,2*pi,100);y=sin(x);z=cos(x);a=sin(x).*cos(x);b=sin(x)./(cos(x)+eps)subplot(2,2,1),plot(x,y),title(sin(x)subplot(2,2,2),plot(x,z),title(
42、cos(x)subplot(2,2,3),plot(x,a),title(sin(x)cos(x)subplot(2,2,4),plot(x,b),title(sin(x)/cos(x)例例 将屏幕分割为四块,并分别画出将屏幕分割为四块,并分别画出y=sin(x),z=cos(x),a=sin(x)*cos(x),b=sin(x)/cos(x)。(5)缩放图形)缩放图形zoom on 单击鼠标左键,则在当前图形窗口中,以鼠标点中的点为中心的图形放大2倍;单击鼠标右键,则缩小2倍.解解 x=linspace(0,2*pi,30);y=sin(x);Plot(x,y)zoom on 例例 缩放缩放
43、y=sin(x)的图形的图形zoom off为当前图形打开缩放模式关闭缩放模式(6)改变视角改变视角view1)view(a,b)命令view(a,b)改变视角到(a,b),a是方位角,b为仰角。缺省视角为(-37.5,30)。view用空间矢量表示的,三个量只关心它们的比例,与数值的大小无关,x轴view(1,0,0),y轴view(0,1,0),z轴view(0,0,1)。2)view(x,y,z)解解 x=-3:0.1:3;y=1:0.1:5;X,Y=meshgrid(x,y);Z=(X+Y).2;subplot(2,2,1),mesh(X,Y,Z)subplot(2,2,2),mesh
44、(X,Y,Z),view(50,-34)subplot(2,2,3),mesh(X,Y,Z),view(-60,70)subplot(2,2,4),mesh(X,Y,Z),view(0,1,1)例例 画出曲面画出曲面Z=(X+Y).2在不同视角的网格图在不同视角的网格图.(7)动画动画 Moviein(),getframe,movie()函数函数Moviein()产生一个帧矩阵来存放动画中的帧;函产生一个帧矩阵来存放动画中的帧;函数数getframe对当前的图象进行快照;函数对当前的图象进行快照;函数movie()按顺序按顺序回放各帧。回放各帧。例例 将曲面将曲面peaks做成动画。做成动画。
45、解解 x,y,z=peaks(30);surf(x,y,z)axis(-3 3-3 3-10 10)m=moviein(100);for i=1:100 view(-37.5+10*(i-1),30)m(:,i)=getframe;end movie(m)4、特殊二、三维图形、特殊二、三维图形(1)特殊的二维图形函数)特殊的二维图形函数(2)特殊的三维图形函数)特殊的三维图形函数(1)特殊的二维图形函数)特殊的二维图形函数1)极坐标图:)极坐标图:polar(theta,rho,s)用角度theta(弧度表示)和极半径rho作极坐标图,用s指定线型。例例的极坐标图形。2cos2sinr解:th
46、eta=linspace(0,2*pi),rho=sin(2*theta).*cos(2*theta);polar(theta,rho,b)title(Polar plot of sin(2*theta).*cos(2*theta);2)柱状图:)柱状图:bar(data,mode)%把单个数据显示为纵向柱条把单个数据显示为纵向柱条 barh(data,mode)%把单个数据显示为横向柱条把单个数据显示为横向柱条 mode默认情况下为grouped模式,则data的每行看作一组画在坐标上。若指定为stacked模式,则把每一组数据累叠起来绘图。例例X=3 2 1;4 2 7;3 6 9;5 1
47、 7用两种模式和方向画的柱状图解:X=3 2 1;4 2 7;3 6 9;5 1 7;subplot(1,2,1)bar(X)subplot(1,2,2)barh(X,stacked)3)面积图:)面积图:area(data)%把每一组数据点累叠绘制,且把每一个数据集合的相把每一组数据点累叠绘制,且把每一个数据集合的相邻点用线条连接,把每一个数据集合所在区域用不同的颜色邻点用线条连接,把每一个数据集合所在区域用不同的颜色填充。填充。例例part1=4 6 7 9 2 3;part2=2 1 3 7 9 8;area(part1 part2)gtext(total=part1+part2)4)饼
48、图:)饼图:pie(data)%当输入数据总和超过当输入数据总和超过1,pie函数会自动计算每一数据在函数会自动计算每一数据在总体中的比例;总体中的比例;%当输入数据总和小于当输入数据总和小于1时,时,pie只绘制输入数据指定的各只绘制输入数据指定的各部分,不足部分,不足1的部分空缺处理。的部分空缺处理。例例 x=rand(1,5)y=0.2 0.45 0.1;subplot(1,2,1)pie(x)subplot(1,2,2)pie(y)5)直方图:)直方图:hist(data,number)%频数直方图,用来显示一直数据记的分布情况,根据频数直方图,用来显示一直数据记的分布情况,根据数据范
49、围分割成数据范围分割成number个区间,直方图中用每一个柱条代个区间,直方图中用每一个柱条代表处于该区间中的数据点数目;表处于该区间中的数据点数目;number缺省时区间长度为缺省时区间长度为1.rose(data)%极坐标下的直方图,也成为玫瑰图。极坐标下的直方图,也成为玫瑰图。例例x=randn(1000,1);y=randn(1000,3);subplot(3,1,1)hist(x)subplot(3,1,2)hist(x,50)subplot(3,1,3)hist(y,25)例例x=rand(1000,1)*1000;theta=x*pi/180;rose(theta)set(fin
50、dobj(gca,Type,line),LineWidth,2.0)6)离散数据图:)离散数据图:stem(X,Y,type,fill)%显示离散数据的变化趋势的火柴杆图,把每一个数据显示离散数据的变化趋势的火柴杆图,把每一个数据点用一个垂直于横轴的火柴棒来表示,火柴头的位置表示数点用一个垂直于横轴的火柴棒来表示,火柴头的位置表示数据点,据点,type表示线型颜色形状,表示线型颜色形状,fill表示是否填充。表示是否填充。stairs(X,Y)%阶梯图。阶梯图。例例t=0:0.2:10;y=exp(-0.2*t).*cos(7*t);subplot(2,1,1)stem(t,y)hold on