《第2章MATLAB的基本语法课件》由会员分享,可在线阅读,更多相关《第2章MATLAB的基本语法课件(137页珍藏版)》请在金锄头文库上搜索。
1、第2章MATLAB数据2.1 MATLAB数据的特点 2.2 变量和赋值 2.3 MATLAB矩阵 2.4 MATLAB运算 2.5 字符串 2.6 结构和单元2.1MATLAB数据的特点1)矩阵是MATLAB最基本、最重要的数据对象。单个数据(标量)可以看成是矩阵的特例。2)MATLAB数据类型-只有一种双精度型双精度型v数值数据:双双精精度度型型(64)、单精度数(32)、带符号整数和无符号整数。v字符数据(8)。v结构(Structure)和单元(Cell)。v多维矩阵和稀疏矩阵(Sparse)。2.2变量和赋值2.2.1变量的命名v在MATLAB中,变量名是以字母开头,后接字母、数字或
2、下划线的字符序列,最多19个字符。v在MATLAB中,变量名区分字母的大小写。MATLAB提供的标准函数名以及命令名必须用小写字母。2.2.2赋值语句赋值就是把数赋予代表常量或变量的标识符。赋值就是把数赋予代表常量或变量的标识符。MATLAB中的变量或常量都代表矩阵。中的变量或常量都代表矩阵。MATLAB赋值语句有两种格式:(1)变量=表达式(或数)(2)表达式一一般般地地,运运算算结结果果在在命命令令窗窗口口中中显显示示出出来来。如如果果在在语语句句的的最最后后加加分分号号,那那么么,MATLAB仅仅仅执行赋值操作,不再显示运算的结果。仅执行赋值操作,不再显示运算的结果。在在MATLAB语语
3、句句后后面面可可以以加加上上注注释释,注注释释以以%开头,后面是注释的内容。开头,后面是注释的内容。矩矩阵阵的的值值放放在在“”中中,同同一一行行元元素素之之间间以以“,”或或空空格格分分开开;句句尾尾用用“,”或或回回车车,此此时时显显示示结结果果;若若不不希希望望显显示示结结果果以以“;”号号结结尾再回车。尾再回车。a=123;456;789a=123456789x=-1.3sqrt(3)(1+2+3)/5*4x=-1.30001.73214.8000v变量的元素用圆括号变量的元素用圆括号“()”中的数字中的数字(下标)表示。一维矩阵(数组)中的(下标)表示。一维矩阵(数组)中的元素用一个
4、下标表示;二维矩阵用两个元素用一个下标表示;二维矩阵用两个下标表示,以逗号分开下标表示,以逗号分开a=123456789a(2,3)ans=6x(2)ans=1.7321x=-1.3sqrt(3)(1+2+3)/5*4v如果赋值元素的下标超出原来矩阵的大如果赋值元素的下标超出原来矩阵的大小,矩阵的行列会自动扩展小,矩阵的行列会自动扩展x(5)=abs(x(1)x=Columns1through5-1.30001.73214.800001.3000a(4,3)=6.5a=1.00002.00003.00004.00005.00006.00007.00008.00009.0000006.5000a
5、(5,:)=5,43a=1.00002.00003.00004.00005.00006.00007.00008.00009.0000006.50005.00004.00003.0000给给a的第五行全的第五行全行赋值,用行赋值,用:号号v把把a的第的第2行和第行和第4行及第行及第1列和第列和第3列交列交点上的元素提出,构成一个新矩阵点上的元素提出,构成一个新矩阵ba=1.00002.00003.00004.00005.00006.00007.00008.00009.0000006.50005.00004.00003.0000b=a(24,13)b=4.00006.000006.5000v要要抽
6、去抽去a中的第中的第2行,第行,第4行,第行,第5行,可用空行,可用空矩阵矩阵的概念的概念v空矩阵空矩阵是指没有元素的矩阵,元素都消失掉是指没有元素的矩阵,元素都消失掉零矩阵零矩阵元素是存在的,只是值为零元素是存在的,只是值为零a(2,4,5,:)=a=123789a=1.00002.00003.00004.00005.00006.00007.00008.00009.0000006.50005.00004.00003.0000复数实数是复数的特例,复数的虚数部分实数是复数的特例,复数的虚数部分用用i或或j表示表示c=3+5.2ic=3.0000+5.2000i复数的赋值方法两种复数的赋值方法两
7、种将矩阵元素逐个赋予复数将矩阵元素逐个赋予复数z=1+2i,3+4i;5+6i,7+8iz=1.0000+2.0000i3.0000+4.0000i5.0000+6.0000i7.0000+8.0000i将矩阵的实部和虚部分别赋值将矩阵的实部和虚部分别赋值z=1,3;5,7+2,4;6,8*iz=1.0000+2.0000i3.0000+4.0000i5.0000+6.0000i7.0000+8.0000i如果在前面其它程序中曾给如果在前面其它程序中曾给i,j赋过值,则赋过值,则i,j此时已不是虚数符号。此时应键入此时已不是虚数符号。此时应键入cleari,j把曾赋值的把曾赋值的i,j清除掉,
8、恢复为虚数标识符清除掉,恢复为虚数标识符MATLAB中所有的运算符和函数对复数中所有的运算符和函数对复数有效有效f=sqrt(1+2i)f=1.2720+0.7862if*fans=1.0000+2.0000i变量检查v在调试程序时,要检查工作空间中的变量及其阶数变量检查用who命令whoYourvariablesare:aansbcfxz详细特征用详细特征用whos命令命令whosNameSizeBytesClassa2x348doublearrayans1x116doublearray(complex)b2x232doublearrayc1x116doublearray(complex)f
9、1x116doublearray(complex)x1x540doublearrayz2x264doublearray(complex)Grandtotalis22elementsusing232bytes每个实元素占8个字节复元素占16个字节介绍介绍Inf(无穷大无穷大infinite)和和NaN(非数非数notanumber)Inf(1/0)1/0Warning:Dividebyzero.ans=InfNaN(0/0,0*Inf,Inf/Inf)Inf/Infans=NaN基本赋值矩阵ans预设的计算结果的变量名预设的计算结果的变量名pi内建的内建的值值Inf值,无限大值,无限大()NaN
10、无法定义一个数目无法定义一个数目()i或或j虚数单位虚数单位i=j=-1Nargin函数输入参数个数函数输入参数个数nargout函数输出参数个数函数输出参数个数realmax最大的正实数最大的正实数realmin最小的正实数最小的正实数flops浮点运算次数浮点运算次数epsMATLAB定义的正的极小值定义的正的极小值=2.2204e-16名称名称含义含义名称名称含义含义zeros全零矩阵全零矩阵(mXn阶阶)logspace对数均分向量对数均分向量(1Xn阶数组阶数组)ones全全么矩阵么矩阵(mXn阶阶)freqspace频率特性的频率区间频率特性的频率区间rand随机数矩阵随机数矩阵(
11、mXn阶阶)meshgrid画三阶曲面时的画三阶曲面时的X,Y网络网络randn正态随机数矩阵正态随机数矩阵(mXn阶阶):将元素按列取出排成一列将元素按列取出排成一列eye(n)单位矩阵单位矩阵(方阵方阵)prod总乘积总乘积linespace均分向量均分向量(1Xn阶数组阶数组)基本矩阵基本矩阵矩阵结构形式提取和变换矩阵结构形式提取和变换名称名称含义含义名称名称含义含义fiplr矩阵左右翻转矩阵左右翻转diag产生或提取对角阵产生或提取对角阵fipud矩阵上下翻转矩阵上下翻转tril产生下三角产生下三角fipdim矩阵特定维翻转矩阵特定维翻转triu产生上三角产生上三角Rot90矩阵反时针
12、矩阵反时针90翻转翻转特殊矩阵特殊矩阵companCompanion矩矩阵阵magic魔方矩阵魔方矩阵galleryHigham矩阵矩阵pascalPascal矩阵矩阵handmardHandmard矩矩阵阵rosser经典的对称特经典的对称特征值测试矩阵征值测试矩阵hankelHankel矩阵矩阵toeplizeToeplize矩阵矩阵hilbHilbert矩阵矩阵vanderVandermonde矩阵矩阵invhilbHilbert逆矩逆矩阵阵wilkinsonWilkinsons特征值测试矩特征值测试矩阵阵例例2.1 2.1 计计算算表表达达式式的的值值,并并将将结结果果赋赋给给变量变量
13、x x,然后显示出结果。然后显示出结果。在MATLAB命令窗口输入命令:x=(5+cos(47*pi/180)/(1+sqrt(7)-2*i)%计算表达式的值x=1.1980+0.6572i2.2.3数据的输出格式MATLAB用十进制数表示一个常数,具体可采用日常记数法和科学记数法两种表示方法。数据输出时用户可以用format命令设置或改变数据输出格式。format命令的格式为:format格式符注意,format命令只影响数据输出格式,而不影响数据的计算和存储。2.2.4预定义变量在MATLAB工作空间中,还驻留几个由系统本身定义的变量。它们有特定的含义,在使用时,应尽量避免对这些变量重新赋
14、值。2.2.5内存变量的管理1.内存变量的显示与删除who和whos这两个命令用于显示在MATLAB工作空间中已经驻留的变量名清单。clear命令用于删除MATLAB工作空间中的变量。注意,预定义变量不能被删除。2.工作空间浏览器(1)工作空间浏览器的启动(2)工作空间浏览器的操作3.内存变量文件v利用MAT文件(.mat)可以把当前MATLAB工作空间中的一些有用变量长久地保留下来。vMAT文件的生成和装入由save和load命令来完成。常用格式为:save文件名变量名表-append-asciiload文件名变量名表-ascii2.3MATLAB矩阵2.3.1矩阵的建立1.直接输入法将矩阵
15、的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。例如A=123;456;789A=1234567892.利用M文件建立矩阵对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。例2.2利用M文件建立MYMAT矩阵。(1)启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵.(2)把输入的内容以纯文本方式存盘(设文件名为mymatrix.m)。(3)运行该M文件,就会自动建立一个名为MYMAT的矩阵,可供以后使用。3.利用MATLAB函数建立矩阵几个产生特殊矩阵的函数:zeros、ones、eye、rand、randn。这几个
16、函数的调用格式相似,下面以产生零矩阵的zeros函数为例进行说明。其调用格式是:zeros(m)产生mm零矩阵zeros(m,n)产生mn零矩阵。zeros(size(A)产生与矩阵A同样大小的零矩阵相关的函数有:length(A)给出行数和列数中的较大者,即length(A)=max(size(A);ndims(A)给出A的维数。例例2.3 2.3 分分别别建建立立3333、3232和和与与矩矩阵阵A A同同样样大大小小的零矩阵。的零矩阵。(1)建立一个33零矩阵:zeros(3)(2)建立一个32零矩阵:zeros(3,2)(3)建 立 与 矩 阵 A同 样 大 小 零 矩 阵 :zero
17、s(size(A)此外,常用的函数还有reshape(A,m,n),它在矩阵总元素保持不变的前提下,将矩阵A重新排成mn的二维矩阵。4.建立大矩阵大矩阵可由方括号中的小矩阵建立起来。例如A=123;456;789;C=A,eye(size(A);ones(size(A),AC=1231004560107890011111231114561117892.3.2冒号表达式冒号表达式的一般格式:e1:e2:e3还 可 以 用 linspace函 数 产 生 行 向 量 :linspace(a,b,n)linspace(a,b,n)与a:(b-a)/(n-1):b等价。2.3.3矩阵的拆分1.矩阵元素
18、MATLAB允许用户对一个矩阵的单个元素进行赋值和操作。例如A(3,2)=200A=12345672009也可以采用矩阵元素的序号来引用矩阵元素。矩阵元素按列编号,先第一列,再第二列,依次类推。以mn矩阵A为例,矩阵元素A(i,j)的序号为(j-1)*m+i。 其 相 互 转 换 关 系 也 可 利 用sub2ind和ind2sub函数求得。2.矩阵拆分(1)利用冒号表达式获得子矩阵A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第j列的元素。A(i:i+m,:)表示取A矩阵第ii+m行的全部元素;A(:,k:k+m)表示取A矩
19、阵第kk+m列的全部元素,A(i:i+m,k:k+m)表示取A矩阵第ii+m行内,并在第kk+m列中的所有元素。此外,还可利用一般向量和end运算符等来表示矩阵下标,从而获得子矩阵。end表示某一维的末尾元素下标。(2)利用空矩阵删除矩阵的元素在MATLAB中,定义为空矩阵。给变量X赋空矩阵的语句为X=。注意,X=与clearX不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间,只是维数为0。将某些元素从矩阵中删除,采用将其置为空矩阵的方法就是一种有效的方法。2.3.4多维矩阵以三维矩阵为例,常用的方法有4种:(1)对二维矩阵进行扩充得到三维矩阵。(2)若干个同样大小的二维矩阵进
20、行组合得到三维矩阵。(3)除产生单位矩阵的eye函数外,前面介绍的建立矩阵的函数都可以延伸到三维矩阵。(4)用cat函数构建多维矩阵。一般调用格式是:cat(n,A1,A2,An)cat函数把大小相同的若干矩阵,沿第n维方向串接成高维矩阵。当n=1和2时,沿行和列的方向串接,结果是二维矩阵。当n=3时,沿页的方向串接,结果是三维矩阵。2.4MATLAB运算 2.4.12.4.1算术运算算术运算1.基本算术运算基本算术运算MATLAB的基本算术运算有:( (加加) )、( (减减) )、*(*(乘乘) )、/(/(右除右除) )、(左除左除) )、(乘方乘方) )。注意:运算是在矩阵意义下进行的
21、,单个数据的算术运算只是一种特例。 2. 2. 点运算点运算点运算符有.*.*、././、.和和.。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。 3 3MATLABMATLAB常用数学函数常用数学函数经经 典典 的的 算算 术术 运运 算算 符符运运算算符符MATLAB表达表达式式加加+a+b减减-a-b乘乘*a*b除除/或或a/b或或ab幂幂ab2.4.2 2.4.2 关系运算关系运算MATLAB提供了6种关系运算符:(小于)、(大于)、=(大于或等于)、=(等于)、=(不等于)。关系运算符的运算法则。指令指令含义含义小于小于大于大于=大于等于大于等于=等于等于=
22、不等于不等于关系运算关系运算指令指令含义含义&逻辑逻辑and|逻辑逻辑or逻辑逻辑not逻辑运算逻辑运算MATLAB常用数学函数常用数学函数名称名称含义含义名称名称含义含义名称名称含义含义sin正弦正弦csc余割余割atanh反双曲正切反双曲正切cos余弦余弦asec反正割反正割acoth反双曲余切反双曲余切tan正切正切acsc反余割反余割sech双曲正割双曲正割cot余切余切sinh双曲正弦双曲正弦csch双曲余割双曲余割asin反正弦反正弦cosh双曲余弦双曲余弦asech反双曲正割反双曲正割acos反余弦反余弦tanh双曲正切双曲正切acsch反双曲余割反双曲余割atan反正切反正切c
23、oth双曲余切双曲余切atan2四象限反正切四象限反正切acot反余切反余切asinh反双曲正弦反双曲正弦sec正割正割acosh反双曲余弦反双曲余弦l三角函数和双曲函数指数函数指数函数名称名称含义含义名称名称含义含义名称名称含义含义expE为底的指数为底的指数log1010为底的对数为底的对数pow22的幂的幂log自然对数自然对数log22为底的对数为底的对数sqrt平方根平方根复数函数复数函数名称名称含义含义名称名称含义含义名称名称含义含义abs绝对值绝对值conj复数共轭复数共轭real复数实部复数实部angle相角相角imag复数虚部复数虚部名称名称含义含义名称名称含义含义ceil向
24、向+取整取整rem求余数求余数fix向向0取整取整round向靠近整数取整向靠近整数取整floor向向-取整取整sign符号函数符号函数mod模除求余模除求余矩矩阵阵变变换换函函数数名称名称含义含义名称名称含义含义fiplr矩阵左右翻转矩阵左右翻转diag产生或提取对角阵产生或提取对角阵fipud矩阵上下翻转矩阵上下翻转tril产生下三角产生下三角fipdim矩阵特定维翻转矩阵特定维翻转triu产生上三角产生上三角Rot90矩阵反时针矩阵反时针90翻转翻转取取整整函函数数和和求求余余函函数数名称名称含义含义名称名称含义含义min最小值最小值max最大值最大值mean平均值平均值median中位
25、数中位数std标准差标准差diff相邻元素的差相邻元素的差sort排序排序length个数个数norm欧氏(欧氏(Euclidean)长度长度sum总和总和prod总乘积总乘积dot内积内积cumsum累计元素总和累计元素总和cumprod累计元素总乘积累计元素总乘积cross外积外积其他函数其他函数例例2.4 2.4 产产生生5 5阶阶随随机机方方阵阵A A,其其元元素素为为10,9010,90区区间间的的随随机机整整数数,然然后后判判断断A A的的元素是否能被元素是否能被3 3整除。整除。(1)生成5阶随机方阵A。A=fix(90-10+1)*rand(5)+10)A=8671594214
26、2846748538591184847549766943108246248221(2)判断A的元素是否可以被3整除。P=rem(A,3)=0P=00010000000011100100001012.4.3 2.4.3 逻辑运算逻辑运算MATLAB提供了3种逻辑运算符:&(与)、|(或)和(非)。运算法则。例例2.5 2.5 在在0,30,3区间,按要求求区间,按要求求y=sin(x)y=sin(x)的值:的值:方法1:x=0:pi/100:3*pi;y=sin(x);y1=(x2*pi).*y;%消去负半波q=(xpi/3&x7*pi/3&x=0).*y;%消去负半波p=sin(pi/3);y
27、2=(y=p)*p+(yp).*y1;%按要求处理第(2)步2.5字符串字符串是用单撇号括起来的字符序列。例如,CentralSouthUniversity。若字符串中的字符含有单撇号,则该单撇号字符应用两个单撇号来表示。字符串是以ASCII码形式存储的。abs和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵。相反,char函数可以把ASCII码矩阵转换为字符串矩阵。例例2.6 2.6 建建立立一一个个字字符符串串向向量量,然然后后对对该该向向量做如下处理:量做如下处理:(1)取第15个字符组成的子字符串。(2)将字符串倒过来重新排列。(3)将字符串中的小写字母变成相应的
28、大写字母,其余字符不变。(4)统计字符串中小写字母的个数。与字符串有关的另一个重要函数是eval,其调用格式为:eval(t)其中t为字符串。它的作用是把字符串的内容作为对应的MATLAB语句来执行。例如t=pi;m=t,sin(t),cos(t);y=eval(m)2.6结构和单元2.6.1结构数据MATLAB通过使用结构(Structure)数据类型把一组不同类型的数据同时又是在逻辑上相关的数据组成一个有机的整体,以便于管理和引用。1.结构矩阵的建立与引用2.结构成员的修改2.6.2单元数据单元(Cell)数据的概念与结构有些类似,也是把不同属性的数据放在一个变量中。所不同的是,结构变量的
29、各个元素下有成员,每个成员都有自己的名字,对成员的引用是:结构变量名.成员名。而单元矩阵的各个元素就是不同类型的数据,用带有大括号下标的形式引用单元矩阵元素。第第4 4章章 MATLABMATLAB绘图绘图4.1 4.1 二维图形二维图形 4.2 4.2 三维图形三维图形 4.3 4.3 三维图形的精细处理三维图形的精细处理 4.4 4.4 图像与动画图像与动画 4.5 4.5 低层绘图操作低层绘图操作4.1 4.1 二维图形二维图形4.1.1绘制二维曲线的最基本函数1.plot函数的基本用法plot函数的基本调用格式为:plot(x,y)其中x和y为长度相同的向量,分别用于存储x坐标和y坐标
30、数据。例例4.1 4.1 在在00X2X2 区间内,绘制曲线区间内,绘制曲线y=2ey=2e- -0.5x0.5xsin(2x)sin(2x)。程序如下:x=0:pi/100:2*pi;y=2*exp(-0.5*x).*sin(2*pi*x);plot(x,y)说明:(1)当x,y是同维矩阵时,则以x,y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。(2)当x是向量,y是有一维与x同维的矩阵时,则绘制出多根不同色彩的曲线。曲线条数等于y矩阵的另一维数,x被作为这些曲线共同的横坐标。(3)plot函数最简单的调用格式是只包含一个输入参数:plot(x)。例例4.2 4.2 某工厂某
31、工厂20002000年各月总产值(单位:万元)年各月总产值(单位:万元)分别为分别为2222、6060、8888、9595、5656、2323、9 9、1010、1414、8181、5656、2323,试绘制折线图以显示出该厂总产,试绘制折线图以显示出该厂总产值的变化情况。值的变化情况。程序如下:p=22,60,88,95,56,23,9,10,14,81,56,23;plot(p)2含多个输入参数的plot函数含多个输入参数的plot函数调用格式为:plot(x1,y1,x2,y2,xn,yn)3含选项的plot函数含选项的plot函数调用格式为:plot(x1,y1,选项1,x2,y2,选
32、项2,xn,yn,选项n)例例4.3 4.3 用不同线型和颜色在同一坐标内绘用不同线型和颜色在同一坐标内绘制曲线制曲线y=2ey=2e-0.5x-0.5xsin(2x)sin(2x)及其包络线。及其包络线。程序如下:x=(0:pi/100:2*pi);y1=2*exp(-0.5*x)*1,-1;y2=2*exp(-0.5*x).*sin(2*pi*x);x1=(0:12)/2;y3=2*exp(-0.5*x1).*sin(2*pi*x1);plot(x,y1,g:,x,y2,b-,x1,y3,rp);4双纵坐标函数plotyyplotyy函数是MATLAB5.X新增的函数。它能把函数值具有不同
33、量纲、不同数量级的两个函数绘制在同一坐标中。调用格式为:plotyy(x1,y1,x2,y2)其中x1y1对应一条曲线,x2y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1y1数据对,右纵坐标用于x2y2数据对。例4.4 用不同标度在同一坐标内绘制曲线y1=e-0.5xsin(2x)及曲线y2=1.5e-0.1xsin(x)。程序如下:x1=0:pi/100:2*pi;x2=0:pi/100:3*pi;y1=exp(-0.5*x1).*sin(2*pi*x1);y2=1.5*exp(-0.1*x2).*sin(x2);plotyy(x1,y1,x2,y2);4.1.2绘制图
34、形的辅助操作1.图形标注有关图形标注函数的调用格式为:title(图形名称)xlabel(x轴说明)ylabel(y轴说明)text(x,y,图形说明)legend(图例1,图例2,)例例4.5 4.5 给图形添加图形标注。给图形添加图形标注。程序如下:x=(0:pi/100:2*pi);y1=2*exp(-0.5*x)*1,-1;y2=2*exp(-0.5*x).*sin(2*pi*x);x1=(0:12)/2;y3=2*exp(-0.5*x1).*sin(2*pi*x1);plot(x,y1,g:,x,y2,b-,x1,y3,rp);title(曲线及其包络线);%加图形标题xlabel(
35、independentvariableX);%加X轴说明ylabel(independentvariableY);%加Y轴说明text(2.8,0.5,包络线);%在指定位置添加图形说明text(0.5,0.5,曲线y);text(1.4,0.1,离散数据点);legend(包络线,包络线,曲线y,离散数据点)%加图例2.坐标控制函数的调用格式为:axis(xminxmaxyminymaxzminzmax)axis函数功能丰富,常用的用法还有:axisequal纵、横坐标轴采用等长刻度axissquare产生正方形坐标系(缺省为矩形)axisauto使用缺省设置axisoff取消坐标轴axis
36、on显示坐标轴gridon/off命令控制是画还是不画网格线,不带参数的grid命令在两种状态之间进行切换。boxon/off命令控制是加还是不加边框线,不带参数的box命令在两种状态之间进行切换。例例4.6 4.6 用图形保持功能在同一坐标内绘制曲线用图形保持功能在同一坐标内绘制曲线y=2ey=2e-0.5x-0.5xsin(2x)sin(2x)及其包络线,并加网格线。及其包络线,并加网格线。程序如下:x=(0:pi/100:2*pi);y1=2*exp(-0.5*x)*1,-1;y2=2*exp(-0.5*x).*sin(2*pi*x);plot(x,y1,b:);axis(0,2*pi,
37、-2,2);%设置坐标holdon;%设置图形保持状态plot(x,y2,k);gridon;%加网格线boxoff;%不加坐标边框holdoff;%关闭图形保持3. 3. 图形窗口的分割图形窗口的分割subplot函数的调用格式为:subplot(m,n,p)例例4.7 4.7 在一个图形窗口中以子图形式同时绘制在一个图形窗口中以子图形式同时绘制正弦、余弦、正切、余切曲线。正弦、余弦、正切、余切曲线。程序如下:x=linspace(0,2*pi,60);y=sin(x);z=cos(x);t=sin(x)./(cos(x)+eps);ct=cos(x)./(sin(x)+eps);subpl
38、ot(2,2,1);plot(x,y);title(sin(x);axis(0,2*pi,-1,1);subplot(2,2,2);plot(x,z);title(cos(x);axis(0,2*pi,1,1);subplot(2,2,3);plot(x,t);title(tangent(x);axis(0,2*pi,-40,40);subplot(2,2,4);plot(x,ct);title(cotangent(x);axis(0,2*pi,-40,40);对图形窗口灵活分割。请看下面的程序。对图形窗口灵活分割。请看下面的程序。x=linspace(0,2*pi,60);y=sin(x);
39、z=cos(x);t=sin(x)./(cos(x)+eps);ct=cos(x)./(sin(x)+eps);subplot(2,2,1);%选择22个区中的1号区stairs(x,y);title(sin(x)-1);axis(0,2*pi,-1,1);subplot(2,1,2);%选择21个区中的2号区stem(x,y);title(sin(x)-2);axis(0,2*pi,-1,1);subplot(4,4,3);%选择44个区中的3号区plot(x,y);title(sin(x);axis(0,2*pi,-1,1);subplot(4,4,4);%选择44个区中的4号区plot(
40、x,z);title(cos(x);axis(0,2*pi,-1,1);subplot(4,4,7);%选择44个区中的7号区plot(x,t);title(tangent(x);axis(0,2*pi,-40,40);subplot(4,4,8);%选择44个区中的8号区plot(x,ct);title(cotangent(x);axis(0,2*pi,-40,40);4.1.3绘制二维图形的其他函数1.其他形式的线性直角坐标图在线性直角坐标系中,其他形式的图形有条形图、阶梯图、杆图和填充图等,所采用的函数分别是:bar(x,y,选项)stairs(x,y,选项)stem(x,y,选项)fi
41、ll(x1,y1,选项1,x2,y2,选项2,)例例4.8 4.8 分别以条形图、填充图、阶梯图和杆分别以条形图、填充图、阶梯图和杆图形式绘制曲线图形式绘制曲线y=2ey=2e-0.5x-0.5x。程序如下:x=0:0.35:7;y=2*exp(-0.5*x);subplot(2,2,1);bar(x,y,g);title(bar(x,y,g);axis(0,7,0,2);subplot(2,2,2);fill(x,y,r);title(fill(x,y,r);axis(0,7,0,2);subplot(2,2,3);stairs(x,y,b);title(stairs(x,y,b);axis
42、(0,7,0,2);subplot(2,2,4);stem(x,y,k);title(stem(x,y,k);axis(0,7,0,2);2 2极坐标图极坐标图polar函数用来绘制极坐标图,其调用格式为:polar(theta,rho,选项)其中theta为极坐标极角,rho为极坐标矢径,选项的内容与plot函数相似。例例4.9 4.9 绘制绘制=sin(2)=sin(2)coscos(2)(2)的极坐标图。的极坐标图。程序如下:theta=0:0.01:2*pi;rho=sin(2*theta).*cos(2*theta);polar(theta,rho,k);3 3对数坐标图形对数坐标图
43、形MATLAB提供了绘制对数和半对数坐标曲线的函数,调用格式为:semilogx(x1,y1,选项1,x2,y2,选项2,)semilogy(x1,y1,选项1,x2,y2,选项2,)loglog(x1,y1,选项1,x2,y2,选项2,)例4.10 绘制y=10x2的对数坐标图并与直角线性坐标图进行比较。程序如下:x=0:0.1:10;y=10*x.*x;subplot(2,2,1);plot(x,y);title(plot(x,y);gridon;subplot(2,2,2);semilogx(x,y);title(semilogx(x,y);gridon;subplot(2,2,3);s
44、emilogy(x,y);title(semilogy(x,y);gridon;subplot(2,2,4);loglog(x,y);title(loglog(x,y);gridon;4. 4. 对函数自适应采样的绘图函数对函数自适应采样的绘图函数fplot函数的调用格式为:fplot(fname,lims,tol,选项)例4.11 用fplot函数绘制f(x)=cos(tan(x)的曲线。先建立函数文件myf.m:functiony=myf(x)y=cos(tan(pi*x);再用fplot函数绘制myf.m函数的曲线:fplot(myf,-0.4,1.4,1e-4)5. 5. 其他形式的图
45、形其他形式的图形MATLAB提供的绘图函数还有很多,例如,用来表示各元素占总和的百分比的饼图、复数的相量图等等。例例4.12 4.12 绘制图形:绘制图形:(1)(1)某次考试优秀、良好、中等、及格、不及格的人数分别某次考试优秀、良好、中等、及格、不及格的人数分别为:为:7,17,23,19,57,17,23,19,5,试用饼图作成绩统计分析。,试用饼图作成绩统计分析。(2)(2)绘制复数的相量图:绘制复数的相量图:3+23+2i i、4.5-i4.5-i和和-1.5+5-1.5+5i i。程序如下:subplot(1,2,1);pie(7,17,23,19,5);title(饼图);lege
46、nd(优秀,良好,中等,及格,不及格);subplot(1,2,2);compass(3+2i,4.5-i,-1.5+5i);title(相量图); 4.2 4.2 三维图形三维图形4.2.14.2.1绘制三维曲线的最基本函数绘制三维曲线的最基本函数plot3函数与plot函数用法十分相似,其调用格式为:plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,xn,yn,zn,选项n)例例4.13 4.13 绘制空间曲线。绘制空间曲线。程序如下:t=0:pi/50:2*pi;x=8*cos(t);y=4*sqrt(2)*sin(t);z=-4*sqrt(2)*sin(t);plot3(
47、x,y,z,p);title(Linein3-DSpace);text(0,0,0,origin);xlabel(X),ylabel(Y),zlabel(Z);grid;4.2.2 4.2.2 三维曲面三维曲面1平面网格坐标矩阵的生成(1)利用矩阵运算生成。x=a:dx:b;y=(c:dy:d);X=ones(size(y)*x;Y=y*ones(size(x);(2)利用meshgrid函数生成。x=a:dx:b;y=c:dy:d;X,Y=meshgrid(x,y);例例4.14 4.14 已知已知66x30x30,15y3615y36,求不定方程求不定方程2 2x+5y=126x+5y=1
48、26的整数解。的整数解。程序如下:x=5:29;y=14:35;x,y=meshgrid(x,y);%在5,2914,35区域生成网格坐标z=2*x+5*y;k=find(z=126);%找出解的位置x(k),y(k)%输出对应位置的x,y即方程的解ans=813182328ans=2220181614运行结果:2. 2. 绘制三维曲面的函数绘制三维曲面的函数surf函数和mesh函数的调用格式为:mesh(x,y,z,c)surf(x,y,z,c)例4.15 用三维曲面图表现函数z=sin(y)cos(x)。程序程序1:x=0:0.1:2*pi;x,y=meshgrid(x);z=sin(y
49、).*cos(x);mesh(x,y,z);xlabel(x-axis),ylabel(y-axis),zlabel(z-axis);title(mesh);程序程序2:x=0:0.1:2*pi;x,y=meshgrid(x);z=sin(y).*cos(x);surf(x,y,z);xlabel(x-axis),ylabel(y-axis),zlabel(z-axis);title(surf);程序程序3:x=0:0.1:2*pi;x,y=meshgrid(x);z=sin(y).*cos(x);plot3(x,y,z);xlabel(x-axis),ylabel(y-axis),zlabe
50、l(z-axis);title(plot3-1);grid;例例4.16 4.16 分析由函数分析由函数z=xz=x2 2-2y-2y2 2构成的曲面形状及与平面构成的曲面形状及与平面z=az=a的交线。的交线。程序如下:x,y=meshgrid(-10:0.2:10);z1=(x.2-2*y.2)+eps;%第1个曲面a=input(a=?);z2=a*ones(size(x);%第2个曲面subplot(1,2,1);mesh(x,y,z1);holdon;mesh(x,y,z2);%分别画出两个曲面v=-10,10,-10,10,-100,100;axis(v);grid;%第1子图的坐
51、标设置holdoff;r0=abs(z1-z2)0.25z0.25部分。部分。程序如下:x=0:0.1:2*pi;x,y=meshgrid(x);z=sin(y).*cos(x);I,J=find(z0.25);forii=1:length(I)z(I(ii),J(ii)=NaN;endsurf(x,y,z);4.3.2视点处理MATLAB提供了设置视点的函数view。其调用格式为:view(az,el)其中az为方位角,el为仰角,它们均以度为单位。系统缺省的视点定义为方位角-37.5,仰角30。例例4.19 4.19 从不同视点绘制多峰函数曲面。从不同视点绘制多峰函数曲面。程序如下:sub
52、plot(2,2,1);mesh(peaks);view(-37.5,30);%指定子图1的视点title(azimuth=-37.5,elevation=30)subplot(2,2,2);mesh(peaks);view(0,90);%指定子图2的视点title(azimuth=0,elevation=90)subplot(2,2,3);mesh(peaks);view(90,0);%指定子图3的视点title(azimuth=90,elevation=0)subplot(2,2,4);mesh(peaks);view(-7,-10);%指定子图4的视点title(azimuth=-7,e
53、levation=-10)4.3.3色彩处理1.颜色的向量表示颜色的向量表示MATLAB除用字符表示颜色外,还可以用含有除用字符表示颜色外,还可以用含有3个元素的向个元素的向量表示颜色。量表示颜色。2.色图色图色图是色图是m3的数值矩阵,它的每一行是的数值矩阵,它的每一行是RGB三元组。色图三元组。色图矩阵可以人为地生成,也可以调用矩阵可以人为地生成,也可以调用MATLAB提供的函数来提供的函数来定义色图矩阵。定义色图矩阵。除除plot及其派生函数外及其派生函数外,mesh、surf等函数均使用色图着色。等函数均使用色图着色。图形窗口色图的设置和改变,使用函数:图形窗口色图的设置和改变,使用函
54、数:colormap(m)其中其中m代表色图矩阵。代表色图矩阵。3.三维表面图形的着色三维表面图形的着色三维表面图实际上就是在网格图的每一个网格片上涂上颜色。三维表面图实际上就是在网格图的每一个网格片上涂上颜色。surf函数用缺省的着色方式对网格片着色。除此之外,还可函数用缺省的着色方式对网格片着色。除此之外,还可以用以用shading命令来改变着色方式。命令来改变着色方式。例例4.20 34.20 3种图形着色方式的效果展示。种图形着色方式的效果展示。程序如下:z=peaks(20);colormap(copper);subplot(1,3,1);surf(z);subplot(1,3,2)
55、;surf(z);shadingflat;subplot(1,3,3);surf(z);shadinginterp; 4.3.4 4.3.4 光照处理光照处理MATLAB提供了灯光设置的函数,其调用格式为:light(Color,选项1,Style,选项2,Position,选项3)例例4.21 4.21 光照处理后的多峰函数曲面。光照处理后的多峰函数曲面。程序如下:z=peaks(20);subplot(1,2,1);surf(z);light(Posi,0,20,10);shadinginterp;holdon;plot3(0,20,10,p);text(0,20,10,light);su
56、bplot(1,2,2);surf(z);light(Posi,20,0,10);shadinginterp;holdon;plot3(20,0,10,p);text(20,0,10,light);4.4图像与动画4.4.1图像1.imread和imwrite函数imread和imwrite函数分别用于将图像文件读入MATLAB工作空间,以及将图像数据和色图数据一起写入一定格式的图像文件。2.image和imagesc函数这两个函数用于图像显示。为了保证图像的显示效果,一般还应使用colormap函数设置图像色图。例例4.22 4.22 在在E E盘根目录下有一图像文件盘根目录下有一图像文件b
57、uilding.building.jpgjpg,在图形窗口显示该图像。在图形窗口显示该图像。程序如下:x,cmap=imread(h:anew.jpg);%读取图像的数据阵和色图阵image(x);colormap(cmap);axisimageoff%保持宽高比并取消坐标轴4.4.2 4.4.2 动画动画1.getframe函数getframe函数可截取每一幅画面信息而形成一个很大的列向量。该向量可保存到一个变量中。显然,保存n幅图就需一个大矩阵。2.moviein函数moviein(n)函数用来建立一个足够大的n列矩阵。该矩阵用来保存n幅画面的数据,以备播放。3.movie函数movie(
58、m,n)函数以每秒n幅图形的速度播放由矩阵m的列向量所组成的画面。例例4.23 4.23 播放一个直径不断变化的球体。播放一个直径不断变化的球体。程序如下x,y,z=sphere(50);m=moviein(30);%建立一个30列大矩阵fori=1:30surf(i*x,i*y,i*z)%绘制球面m(:,i)=getframe;%将球面保存到m矩阵endmovie(m,10);%以每秒10幅的速度播放球面4.5低层绘图操作4.5.1图形对象及其句柄1.图形对象MATLAB把构成图形的各个基本要素称为图形对象。这些对象包括计算机屏幕、图形窗口(Figure)、坐标轴(Axes)、用户菜单(Ui
59、menu)、用户控件(Uicontrol)、曲线(Line)、曲面(Surface)、文字(Text)、图像(image)、光源(Light)、区域块(Patch)和方框(Rectangle)。系统将每一个对象按树型结构组织起来。每个图形对象都可以被独立地操作。 2. 2. 图形对象句柄图形对象句柄MATLAB在创建每一个图形对象时,都为该对象分配唯一的一个值,称其为图形对象句柄(Handle)。句柄是图形对象的唯一标识符。MATLAB提供了3个用于获取已有图形对象句柄的函数:gcf获取当前图形窗口的句柄(getcurrentfigure)。gca获取当前坐标轴的句柄(getcurrentax
60、is)。gco获取最近被单击的图形对象的句柄(getcurrentobject)。4 4.5.2 .5.2 图形对象属性图形对象属性1.属性名与属性值MATLAB给每种对象的每一个属性规定了一个名字,称为属性名,而属性名的取值成为属性值。例如,LineStyle是曲线对象的一个属性名,它的值决定着线型,取值可以是-、:、-.、-或none。2.属性的操作set函数的调用格式为:set(句柄,属性名句柄,属性名1,属性值,属性值1,属性名,属性名2,属性值,属性值2,)get函数的调用格式为:V=get(句柄,属性名句柄,属性名)4.5.3 4.5.3 图形对象的创建图形对象的创建1.图形窗口对
61、象建立图形窗口对象使用figure函数。调用该函数的命令形式为:句柄变量句柄变量=figure(属性名属性名1,属性值,属性值1,属性名,属性名2,属性值,属性值2,)MATLAB为每个图形窗口提供了很多属性。这些属性及其取值控制着图形窗口对象。除公共属性外,其他常用属性:MenuBar属性属性、Name属性、属性、Position属性、属性、Color属性属性等。例例4.25 4.25 建立一个图形窗口。该图形窗口没有菜单建立一个图形窗口。该图形窗口没有菜单条,标题名称为条,标题名称为“图形窗口示例图形窗口示例”,起始于屏幕左,起始于屏幕左下角、宽度和高度分别为下角、宽度和高度分别为3003
62、00像素点和像素点和150150像素点,像素点,背景颜色为绿色,且当用户从键盘按下任意一个键背景颜色为绿色,且当用户从键盘按下任意一个键时,将显示时,将显示“Hello,Keyboard Key Pressed.”Hello,Keyboard Key Pressed.”字字样。样。命令如下:hf=figure(Color,0,1,0,Position,1,1,300,150,.Name,图形窗口示例,NumberTitle,off,MenuBar,none,.KeyPressFcn,disp(Hello,KeyboardKeyPressed.);显示:Hello,KeyboardKeyPres
63、sed.例4.26分分别别在在4 4个个不不同同的的图图形形窗窗口口绘绘制制出出正正弦弦、余余弦弦、正正切切、余余切切曲曲线线。要要求求先先建建立立一一个个图图形形窗窗口口并并绘绘图图,然然后后每每关关闭闭一一个个再建立下一个,直到建立第再建立下一个,直到建立第4 4个窗口并绘图。个窗口并绘图。程序如下:x=linspace(0,2*pi,60);y=sin(x);z=cos(x);t=tan(x);ct=1./(t+eps);%命令组待用C4=figure(Name,cotangent(x),NumberTitle,.off);plot(x,ct);axis(0,2*pi,-40,40);C
64、3=figure(Name,tangent(x),DeleteFcn,C4,.NumberTitle,off);plot(x,t);axis(0,2*pi,-40,40);C2=figure(Name,cos(x),DeleteFcn,C3,.NumberTitle,off);plot(x,z);axis(0,2*pi,-1,1);%先创建1个图形窗口并绘制曲线figure(Name,sin(x),DeleteFcn,C2,NumberTitle,off);plot(x,y);axis(0,2*pi,-1,1);2.坐标轴对象建立坐标轴对象使用axes函数,调用它的命令形式为:句柄变量=axe
65、s(属性名1,属性值1,属性名2,属性值2,)MATLAB为每个坐标轴对象提供了很多属性。除公共属性外,还有其他常用属性。例例4.274.27利用坐标轴对象实现图形窗口的任意分割。利用坐标轴对象实现图形窗口的任意分割。程序如下:clf;%清图形窗口x=linspace(0,2*pi,20);y=sin(x);axes(Posi,0.2,0.2,0.2,0.7);plot(y,x);title(sin(x)-1);axes(Posi,0.4,0.5,0.2,0.1);stairs(x,y);title(sin(x)-2);axes(Posi,0.55,0.6,0.25,0.3);stem(x,y
66、);title(sin(x)-3);axes(Posi,0.55,0.2,0.25,0.3);stem(x,y);title(sin(x)-4);3 3. . 曲线对象曲线对象建立曲线对象使用line函数,调用它的命令形式为:句柄变量=line(x,y,z,属性名1,属性值1,属性名2,属性值2,)其中对x,y,z的解释与高层曲线函数plot和plot3等一样,其余的解释与前面介绍过的figure和axes函数类似。每个曲线对象也具有很多属性。除公共属性外,还有其他常用属性。4. 4. 文字对象文字对象使用text函数可以根据指定位置和属性值添加文字说明,并保存句柄。调用该函数的命令形式为:句
67、柄变量=text(x,y,z,说明文字,属性名1,属性值1,属性名2,属性值2,)其中说明文字中除使用标准的ASCII字符外,还可使用LATEX格式的控制字符。除公共属性外,文字对象还有其他常用属性。例例4.28 4.28 利用曲线对象完成例利用曲线对象完成例4.54.5。程序如下:程序如下:x=(0:pi/100:2*pi);y1=2*exp(-0.5*x)*1,-1;y2=2*exp(-0.5*x).*sin(2*pi*x);x1=(0:12)/2;y3=2*exp(-0.5*x1).*sin(2*pi*x1);line(x,y1,LineStyle,:,color,g);line(x,y
68、2,LineStyle,-,color,b);line(x1,y3,LineStyle,none,Marker,p,color,r);title(曲线及其包络线);xlabel(independentvariableX);ylabel(independentvariableY);text(2.8,0.55,2e-0.5x,FontSize,12);text(0.45,0.55,y=2e-0.5xsin(2pix),FontSize,12);text(1.4,0.1,离散数据点);legend(包络线,包络线,曲线y,离散数据点) 5. 5. 曲面对象曲面对象建立曲面对象使用surface函数,
69、调用它的命令形式为:句柄变量句柄变量=surface(x,y,z,属性名属性名1,属性值,属性值1,属性,属性名名2,属性值,属性值2,)其中对x,y,z的解释与高层曲面函数mesh和surf等一样,其余的解释与前面介绍过的figure和axes等函数类似。每个曲面对象也具有很多属性。除公共属性外,还有其他常用属性。例4.29利用曲面对象绘制三维曲面利用曲面对象绘制三维曲面z=sin(y)z=sin(y)coscos(x)(x)。程序如下:程序如下:x=0:0.1:2*pi;x,y=meshgrid(x);z=sin(y).*cos(x);axes(view,-37.5,30);hs=surface(x,y,z,FaceColor,w,EdgeColor,flat);gridon;xlabel(x-axis),ylabel(y-axis),zlabel(z-axis);title(mesh-surf);pause;set(hs,FaceColor,flat);