资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,2,章,MATLAB,的基本语法,第,2,章,MATLAB,的基本语法,第,2,章,MATLAB,的基本语法,2.1,变量及其赋值,2.2,运算符与数学表达式,2.3,控制流,2.4,数据的输入输出及文件的读写,2.5,基本数学函数,2.6,基本绘图方法,2.7 M,文件及程序调试,2.1,变量及其赋值,2.1.1,标识符与数,标识符是标志变量名、常量名、函数名和文件名的字符串的总称。在,MTLAB,中,变量和常量的标识符最长允许,19,个字符。字符包括全部的英文字母(大小写,52,个)、阿拉伯数字和下划线等符号,标识符中第一个字符必须是英文字母。,2.1.2,矩阵及其元素的赋值,赋值就是把数赋予代表常量或变量的标识符。在,MATLAB,中,变量都代表矩阵。,列矢量可被当作只有一列的矩阵;行矢量也可被当作只有一个行的矩阵;标量应看作,1,1,阶的矩阵。赋值语句的一般形式为:,变量表达式(或数),1,赋值要求,在输入矩阵时,应遵循以下规则:,整个矩阵的值应放在方括号中;,同一行中各元素之间以逗号“,”或空格分开;,不同行的元素以分号“;”隔开。,2,变量的元素的标注,在,MATLAB,中,变量的元素(即矩阵元)用圆括号“()”中的数字(也称为下标),来注明,一维矩阵(也称数组)中的元素用一个下标表示,二维矩阵由两个下标数构成,,以逗号分开,对三维矩阵则由三个下标数构成。,3,赋值技巧,(1),利用冒号“:”给全行的元素赋值,(2),利用行、列标注构成新的矩阵,4,特殊矩阵和数组,(1),单位矩阵函数,eye(),函数功能:产生对主角线元素为,1,,其它元素为,0,的单位矩阵。,eye(),的调用格式如下:,A=eye(n),返回一个,n,n,阶单位矩阵;,A=eye(m , n),返回一个,m,n,阶单位矩阵,或用,A=eye(m , n),;,(2) zeros,函数、,ones,函数、,rand,以及,randn,函数,A=zeros(n),返回一个,n,n,阶零矩阵;,A=zeros(m , n),返回一个,m,n,阶零矩阵;,(3)linspace,函数和,logspace,函数,linspace,函数的调用格式如下:,y=,linspace(a,b,),产生一个行矢量,y,,,该矢量把,a,和,b,间的数等分,100,份而得到。,y=,linspace(a,b,n,),产生一个行矢量,y,,,该矢量把,a,和,b,间的数等分,n,份而得到。,5,MATLAB,内部特殊变量和常数,变量,ans,:临时变量,通常指示当前的答案。,常数,eps,:,表示浮点相对精度;其值是从,1.0,到下一个最大浮点数之间的差值。变量值作为一些,MATLAB,函数计算的相对浮点精度,按,IEEE,标准,,esp,= 2,-52,近似为,2.2204e-016,。,常数,realmax,:表示最大正浮点数;任何大于该值的运算都溢出。在具有,IEEE,标准浮点格式的机器上,,realmax,略小于,21024,,近似为,1.7977e+308,。,常数,realmin,:,表示最小正浮点数;任何小于该值的运算都溢出。在具有,IEEE,标准浮点格式的机器上,,realmin,略小于,2,-1024,,近似为,2.2251e-308,。,常数,pi,:表示圆周率,=3.1415926535897.,。表达式,4*atan(1),和,imag(log(-1),产生相同的值,。,常数,Inf,:,代表正无穷大,一般被,0,除或溢出则产生无穷大结果。如,2/0,,,210000,均产生结果:,Inf,;而,log(0),产生结果:,-,Inf,。,虚数单位,i,,,j,:,表示复数虚部单位,相当于,。,NaN,:表示非数值。如当,Inf-Inf,,,Inf/Inf,,,0*,Inf,,,0/0,均产生该结果。,6,复数的赋值方式,MATLAB,的每一个元素都可以是复数,实数是复数的特例。复数的虚数部分用,i,或,j,表示。,对复数矩阵有两种赋值方法:,(1),可将矩阵元逐个赋予复数,(2),将矩阵的实部和虚部分别赋值:,7,变量检查,在程序调试或变量的赋值过程,往往需要检查工作空间中的变量、变量的阶数以及变量赋值内容。在检查变量及其阶数等内容时,既可用工作空间窗口,也可在命令窗口使用,who,或,whos,命令来完成检查。当查看某变量的赋值情况,可在命令窗口直接键入该变量名回车即可。,2.2,运算符与复数运算,算术运算符:,进行数值计算。,关系运算符:,比较两个操作数的大小。,逻辑运算符:,进行逻辑运算。,2.2.1,算术运算符,(1),矩阵加减法“,”,:,AB,功能:两矩阵对应元素相加减。因此,,A,和,B,两矩阵必须有相同的大小,或其中之一 为标量,标量可以与任意大小的矩阵相加。,(2),矩阵相乘“*”:,A*B,功能:,C =A*B,为两矩阵线性代数的乘积,即,(3),矩阵元素相乘“,.*”,:,A.*B,功能:矩阵,A,和,B,的对应元素相乘;因此,,A,和,B,必须大小相同,或其中之一为标量。,(4),矩阵右除“,B/A”,与左除“,AB”,如果,A,为一非奇异矩阵,则,B/A,与,AB,可通过,A,的逆矩阵与,B,矩阵得到:,B,/A=B*,inv(A,),;,AB=,inv(A,)*B,。,(5),矩阵元素右除“,A./B”,与左除“,A.B”,矩阵元素右除“,A./B”,表示矩阵元素,A(i,j)/B(i,j),;,矩阵元素左除“,A./B”,表示矩阵,B(i,j)/A(i,j),,因此,,A,和,B,必须大小相同,或者其中之一为标量。,(6),矩阵幂“”:,X,p,如果,p,为标量,表示,X,的,p,次幂;如果,X,为标量,而,p,为矩阵,,X,p,用特征值和特征特征 向量表示,X,的矩阵,p,次幂。注意,X,和,p,不能同时为矩阵,但必须是方阵。,(7),矩阵元素幂“,.,”:,A.,B,A.,B,表示矩阵元素,A,(,i,j,)的,B(i,j,),次幂,,A,与,B,必须大小相同,或者其中之一为标量。,(8),矩阵转置“ ”,A,表示矩阵,A,的线性代数转置。对于复矩阵,表示复共轭转置。,(9),非共轭转置“,. ”,A.,表示非共轭转置;对于复矩阵,不包括共轭。,(10),冒号操作符“:”,冒号是一个非常有用的操作符;可以产生向量、数组下标以及,for,循环。,关系比较结果只有两种可能,即,1,或,0,。,1,表示关系式这“真”,即关系式正确;,0,表示该关系为“假”,即它不成立。,2.2.3,逻辑操作符,通常逻辑变量只能取,0(,假,),和,1(,真,),两个值。逻辑量的基本运算除“与,(&)”,、“或,(|)”,和“非,()”,外,有时也包括“异或,(,xor,)”,,,不过“异或”可以用,3,种基本运算组合而成。两个逻辑量经过这,4,种逻辑运算后的输出仍然是逻辑量。,2.2.2,关系操作符,关系运算是指两个元素之间数值的比较。,MATLAB,所提供的关系操作符如表所示。,2.2.4,关系与逻辑函数,其他关系与逻辑函数,测试函数,2.2.5,复数运算,1,MATLAB,中所有的运算符和函数都对复数有效。,2,复数的共轭可利用函数“,conj”,来完成,2.3,控制流,2.3.1 If,语句,if,语句称为条件执行语句。,其关键字包括,if,、,else,、,elseif,和,end,。,格式之一,:,if,表达式,语句组,A,end,其工作流程如图所示。,注意:,语句中的,end,是决不可少的,没有它,在逻辑表达式为,0,时,就找不到继续执行程序的入口。,格式之二:,if,表达式,语句组,A,else,语句组,B,end,其工作流程如图所示。,格式之三:,if,表达式,1,语句组,A,elseif,表达式,2,语句组,B,else,语句组,C,end,工作流程原理如图,2.3,所示。,switch,选择表达式,case,情况表达式,1,语句组,1,case,情况表达式,2,语句组,2,otherwise,语句组,n,end,2.3.2,Switch,语句,switch,语句,也是条件选择结构。其关键字包括,switch,、,case,、,otherwise,和,end,。,它主,要用于有选择性的程序设计,实现程序的多分支选择。其调格式为:,2.3.3,While,语句,while,语句为条件循环语句,循环执行一组语句,执行次数不确定,而是决定于一些逻辑条件。其关键字包括,while,、,end,、,break,等。,基本调用格式:,while,表达式,语句,A,end,2.3.4 for,语句,for,语句也是循环语句,但与,while,语句不同的是,它循环执行一组语句的执行次数是,确定。其关键字包括,for,、,end,、,break,等。调用的基本格式如下:,for index=,初值:增量:终值,语句组,A,end,功能:把语句组,A,(,亦称为循环体)反复执行,N,次。循环次数,N,为:,N,1+(,终值,-,初值,)/,增量,在每次执行时程序中的,index,的值按“增量”增加。,注意:,(1)For,循环不能用,For,循环内重新赋值循环变量,n,来终止。,(2),在,For,循环内接受任何有效的,MATLAB,数组。,(3) for,循环可按需要嵌套。与其它的编程语言类似,,for,语句可以嵌套使用。,(4),当有一个等效的数组方法来解给定的问题时,应避免用,For,循环。,(5),为了提高处理的速度,在,For,循环,(While,循环,),被执行之前,应预先分配数组,。,2.4,数据的输入输出及文件的读写,2.4.1,交互输入与输出命令和函数,1,键盘输入命令,input,格式一:,u=input,(,提示内容),格式二:,u=input,(,提示内容,,s,),在屏幕上显示提示内容,等待从键盘输入,将输入的符号以字符串赋给文本(字符串)变量,u,。,2.,菜单输入命令,menu,功能:产生一个供用户输入的选择菜单。,格式:,k=menu,(,title,,,选项,1,,选项,2,,,,,选项,n,),显示以字符串变量,title,为标题的菜单,选择为字符变量:选项,1,,选项,2,,,,,选项,n,,,并将所输入的值赋给变量,k,。,3,暂停执行命令,pause,pause,常用在,M,文件中,用于停止执行,直接按任意键继续执行;,pause(n),暂停执行,n,秒后继续执行;,pause on,允许一系列,pause,命令暂停程序执行;,pause off,保证任何,pause,命令和,pausea(n,),语句不能暂停程序执行。,4,显示命令,disp,功能:显示指定的变量或变量的内容。,调用格式:,disp,(,变量名,),5,按格式要求输出变量命令,sprintf,功能:按格式要求输出变量,调用格式:,sprintf,(,显示格式,变量,),。,2.4.2,文件输入输出命令与函数,1,save,功能:用以将工作空间中的变量保存到磁盘上。,格式一:,save,将工作空间中的所有变量保存在一个名为:“,matlab.mat,”,的二进制格式文件中,该文件可通过,load,命令来重新装入工作空间。,格式二:,save,文件名 变量名,将工作空间中指定的“变量名”保存在指定“文件名,.mat”,的二进制格式文件中。,格式三:,save,文件名 选项,使用“选项”指定,ASCII,文件格式,将工作实间中所有变量保存到“文件名”所指定的文件中。,2. load,:,功能:从磁盘文件中重新调入变量内容到工作空间。,格式一:,load,将保存在“,matlab.mat,”,文件中的所有变量调入到工作空间。,格式二:,load,文件名,从“文件名,. mat”,中调入变量,可给出全部路径。,3.,fopen,功能:打开文件或获得打开文件信息。,格式一:,f_id=,fopen,(,文件名,允许模式,),以允许模式指定的模式打开“文件名”所指定的文件,返回文件标识,f_id,;,允许模式,可以是下列几个字符串之一:,r,:,打开文件进行读(缺省型式);,w,:,删除己存在文件中的内容或生成一个新文件,打开进行写操作;,a,:,打开一个己存在的文件或生成并打开一个新文件,进行写操作,在文件末尾添加,数据;,格式二:,f_id , message=,fopen,(,文件名,允许模式,格式,),功能:用指定的数据“格式”打开数据文件,返回文件标识和打开文件信息两个参数。,“数据格式”,。,如果,fopen,成功打开文件,则返回文件标识,f_id,,,message,内容为空,如果不能成功打开,则返回,f_id,值为,1,,,message,中返回一个有助于判断错误类型的字符串。,有三个值是预先定义的,不能打开或关闭:,0,:表示标准输入,一直处于打开读入状态。,1,:表示标准输出,一直处于打开追加状态。,2,:表示标准错误,一直处于打开追加状态。,4,fclose,功能:关闭一个或多个已打开的文件。,格式一:,status=,fclose(f_id,),关闭指定文件,返回,0,表示成功,返回,-1,表示失败。,格式二,status=,fclose(all,),功能: 关闭所有文件,返回,0,表示成功,返回,-1,表示失败。,5,fread,格式一:,A, count=,fread(f_id, size, ,精度,),功能:从指定文件中读入二进制数据,将数据写入到矩阵,A,中;可选输出,count,返回成功读入元素个数;,f_id,为整数文件标识,其值由,fopen,函数得到;可选参数,size,确定读入多少数据,如果不指定参数,size,,,则一直读到文件结束为止,参数,size,合法选择有:,n,:,读入,n,个元素到一个列向量;,inf,:读,到文件结束,返回一个与文件数据元素相同的列向量;,m, n,:,读入足够元素填充一个,mn,阶矩阵,填充按列顺序进行,如果文件不够大,则填充,0,。,精度表示读入数据精度的字符串,控制读入每个值的数据位,这些位可以是整数型、浮点值或字符。,格式二:,A, count=,fread(f_id, size,精度,skip),可选参数,skip,,,指定每次读操作跳过字节数,如果精度是某一种位格式,则每次读操作将跳过相应位数。,6,fwrite,功能:向文件中写入二进制数据。,格式一:,count=,fwrite,(f_id, A,精度,),将矩阵,A,中元素写入指定文件,将其值转换为指定的精度。,格式二:,count=,fwrite(f_id,A,精度,skip),可用参数,skip,指定每次写操作跳过指定字节。,7,fscanf,格式一:,A=,fscanf,(f_id, ,格式),从由,f_id,所指定的文件中读入所有数据,并根据格式字符串进行转换,并返回给矩阵,A,,格式字符串指定被读入数据的格式。,格式二:,A, count=,fscanf(f_id,格式,size),读入由,size,指定数量的数据,并根据格式字符进行转换,并返回给矩阵,A,,,同时返回成功读入的数据数量,count,。,8,fprintf,格式一:,count=,fprintf(f_id,,,格式,,A,,,),将矩阵,A,或其它矩阵的实部数据以格式字符串指定的形式进行规格化,并将其写入指定的文件中,其返回值为写入数据的数量。,格式二:,fprintf,(,格式,,A,,,),将,A,或其它值以格式给定的形式输出到标准输出显示屏幕上。,9,fgets,功能:以字符串形式返回文件中的下一行内容,包含行结束符。,格式一:,ctr,=,fgets(f_id,),返回文件标识为,f_id,的文件中的下一行内容,如果遇到文件结尾(,EOF,),,则返回,-1,,所返回的字符串中包括文本结束符,用,fgetl,(,),则返回的字符串中不包括行结束符。,格式二:,str,=,fgest(f_id,,,n),返回下行中最多,n,个字符,在遇到行结束符或文件结束(,EOF,),时不追加字符。,10,fgetl,功能:以字符串形式返回文件中的下一行内容,但不含行结束符。,格式:,str,=,fgetl(f_id,),返回文件标识为文件中的下一行内容,如果遇到文件结尾,则返回,1,,所返回的字符串中不包括行结束符。,11,ferror,功能:查询,MATLAB,关于文件输入、输出操作的错误。,messgeg,=,ferror(f_id,),将标识为,f_id,的已打开文件的错误信息返回给,message,变量。,12,feof,功能:测试文件结尾(,EOF,)。,格式:,eoftest,=,feof(f_id,),测试指定文件是否设置了,EOF,;,如果返回,1,则表示设置了,EOF,指示器,返回,0,未设置。,13,imread,功能: 从图像文件中读入图像,格式一:,A=,imread,(,文件名,图像文件格式),将文件名指定的图像文件读入,A,,,A,为无符号,8,位整数(,uint8,)。,如果文件为灰度图像,,则,A,为一个二维数组;如果文件是一个真彩色,RGB,图像,则,A,是一个三维数组,(m*n*3),。,格式二:,A, map=,imread,(,文件名,图像文件格式),读入索引图像到矩阵,A,,,其调色板值返回给,map,,,A,为无符号,8,位整数(,uint8,),,map,为双精度浮点数,其值在,0,,,1,范围内。,14,imwrite,:,将图像写入图像文件中。,格式一:,imwrite(A,文件名,图像文件格式,),格式二:,imwrite(A,,,map,,,文件名,图像文件格式,),将,A,中的索引图像及其相关的调色板,map,存放到指定文件。调色板,map,必须是,MATLAB,的有效调色板。注意大多数图像文件格式不支持大于,256,条的调色板。,15,imfinfo,功能:返回图像文件信息,格式:,info=,imfinfo,(,文件名,图像文件格式,),返回一个图像信息结构,或结构数组。图像文件格式与,imread,函数的一样。,16,auread,功能,:,读入声音文件(,.au,),格式一:,Y=,auread,(,aufile,),读入由文件名,aufile,指定的声音文件,返回采样数据给变量,Y,。,如果文件名中没有扩,展名,则自动在其后加上,.au,作为扩展名。幅值在,-1,,,1,范围内。支持多通道数据格式:,8-bit,mu,-law,;,或,8-, 16-,,,32-bit,linear,。,格式二:,Y, Fs,bits=,auread(aufile,),返回采样率,Fs(Hz),以及文件中每数据编码时所用的位数,(bits),。,17,Auwrite,功能:向文件(,. au,),中写入声音数据。,格式一:,auwrite(A, ,文件名,. Au ),向文件名,. au,指定的文件中写入声音数据,数据在,A,中以一个通道一列的方式安排,,幅值超过,-1, +1,范围时,在写入前先进行剪裁处理。,格式二:,auwrite(A, Fs, ,文件名,. au ),用指定的数据采样,Fs(Hz),写入声音数据。,18,wavread,功能,:,读入声音文件(,.wav,),格式一:,A=,wavread,(,文件名,.wav),读入由文件名指定的,Microsoft,声音文件,(. wav),,,返回采样数据给变量,A,。,如果文件,名中没有扩展名,则自动在其后加上,.wav,作为扩展名,幅值在,-1,,,1,范围内。,格式二:,A,Fs,bits=,wavread,(,文件名,.wav),返回采样率,Fs(Hz),以及文件中每数据编码时所用的位数,(bits),。,19,wavwrite,功能:向,Microsoft WAV,声音文件(,.wav,),中写入声音数据,格式一:,wavwrite,(A, ,文件名,.wav),向指定的文件中写入声音数据,数据在,A,中以一个通道一列的方式安排,幅值超过,-1, +1,范围时,在写入前先进行剪裁处理。,格式二:,wavwrite(A, Fs, ,文件名,.wav),用指定的数据采样,Fs(Hz),写入声音数据。,2.5,基本数学函数,2.5.1,三角函数,1,正弦,sin,函数与反正弦函数,asin,函数,格式:,A,sin(X),功能:对矩阵或数组,X,的每个元素求正弦值,所有角度用弧度表示。,格式:,X,asin(A,),功能:对于,A,的元素求反正弦值,结果为弧度。,2,双曲正弦,sinh,函数与反双曲正弦函数,asinh,函数,格式:,A,sinh(X,),功能:对矩阵或数组,X,的每个元素求双曲正弦值。,格式:,X,asinh(A,),功能:对于,A,的元素求反双曲正弦值。,3,余弦,cos,函数与反余弦函数,acos,函数,格式:,A,cos(X,),功能:对矩阵或数组,X,的每个元素求余弦值,所有角度用弧度表示。,格式:,X,acos(A,),功能:对于,A,的元素求反余弦值,结果为弧度。,4,双曲余弦,cosh,函数与反双曲余弦函数,acosh,函数,格式:,A,cosh(X,),功能:对矩阵或数组,X,的元素求双曲余弦值。,格式:,X,acosh(A,),功能:对于,A,的元素求反双曲余弦值。,5,正切,tan,函数与反正切函数,atan,函数,格式:,A,tan(X),功能:对矩阵或数组,X,的每个元素求正切值,所有角度用弧度表示。,格式:,X,atan(A,),功能:对于,A,的每个元素求反正切值,结果为弧度。,6,四象限反正切,atan2,函数,格式:,P=atan2(Y,,,X),功能:四象限反正切函数。返回大小与,Y,、,X,相同的矩阵或数组,由,Y,和,X,对应元素的,实部求反正切值得到,其中虚部忽略。,7,双曲正切,tanh,函数与反双曲正切,atanh,函数,格式:,A,tanh(X,),功能:对于,X,的每个元素求双曲正切值。,格式:,X,atanh(A,),功能:对于,A,的每个元素求反双曲正切值。,8,正割,sec,函数与反正割,asec,函数,格式:,A,sec(X),功能:对,X,的每个元素求正割。,格式:,X,asec(A,),功能:返回,A,的每个元素的反正割值。,9,双曲正割,sec,函数与反双曲正割,asec,函数,格式:,A,sech(X,),功能:对,X,的每个元素求,双曲,正割。,格式:,X,asech(A,),功能:返回,A,的每个元素的反双曲正割值。,10,余割,csc,函数与反余割,acsc,函数,格式:,A,csc(X,),功能:对,X,的每个元素求正割。,格式:,X,achc(A,),功能:返回,A,的每个元素的反正割值。,11,双曲余割,csch,函数与反双曲余割,asch,函数,格式:,A=,csch(X,),功能:对,X,的每个元素求双曲余割。,格式:,X,acsch(A,),功能:返回,A,的每个元素的反双曲余割值。,12,余切,cot,函数与反余切,acot,函数,格式:,A=cot(X),功能:对,X,的每个元素求余切。,格式:,X,acot(A,),功能:返回,A,的每个元素的反余切值。,13,双曲余切,coth,函数与反双曲余切函数,acoth,函数,格式:,A=,coth(X,),功能:对,X,的每个元素求双曲余切。,格式:,X,acoth(A,),功能:返回,A,的每个元素的反双曲余切值,2.5.2,指数、对数、幂运算,1,指数,exp,函数与自然对数,log,函数,格式:,A,exp(X),功能:返回,X,每个元素的以,e,为底的指数值。,格式:,X,log(A),功能:返回,A,的每个元素的自然对数。,2,常用对数,logl0,函数,格式:,X,logl0(A),功能:对,A,的每个元素求常用对数。,3,log2,函数和幂函数,pow2,格式:,X,log2(A),功能:对,A,的每个元素计算其以,2,为底的对数。,格式:,A=pow2(X),功能:,A,的元素为,2,对,X,每个元素求幂得到。,4,平方根函数,格式:,A=,sqrt(X,),功能:返回对数组,X,每个元素求平方根的数组,如果元素为负或复数,则结果为复数。,2.5.3,复数的基本运算,1,求复数实部函数,real,格式:,X=real(Z),功能:返回复数,Z,的每个元素的实部。,2,求复数的虚部函数,imag,格式:,Y=,imag(Z,),功能:返回复数,Z,的每个元素的虚部。,3,绝对值和复数模函数,abs,格式:,A=abs(Z),功能:返回,Z,每个元素的绝对值。如果,Z,的元素是复数,则返回其模。,4,求相角函数,angle,格式:,P=angle(Z),功能:对,Z,的每个元素求相角。,5,共轭函数,conj,格式:,C=conj(Z),功能:对,Z,的每个元素求共轭复数,。,2.5.4,数据的取舍与保留,1,向,0,方向取整数函数,fix,格式:,I=fix(X),返回,X,中每个元素的最靠近零的整数。若,X,为复数,则分别对,X,的实部和虚部取整。,2,向,-,方向取整数函数,floor,格式:,I=floor(X),返回,X,中每个元素的最靠近该元素的最小整数。若,X,为复数,则分别对,X,的实部和虚部取最小整。,3,向,-,方向取整数函数,ceil,格式:,I=ceil(X),返回,X,中每个元素的最靠近该元素的最大整数。若,X,为复数,则分别对,X,的实部和虚部取最大整数。,4,四舍五入取整数函数,round,格式:,I=round(X),返回,X,中每个元素的最靠近该元素的整数。若,X,为复数,则分别对,X,的实部和虚部取整数。,5,模数余函数,mod,格式:,M=mod(X,,,Y),返回,X,关于,Y,的余数,。,6,除后余数函数,rem,格式:,M=,rem(X,,,Y),功能:返回,X,关于,Y,的余数,。,7,符号函数,sign,格式:,s=sign(X),如果,X,大于零,则返回,1,;如果,X,等于零,则返回,0,;如果,X,小于零,则返回,-1,。,如果,X,为复数,则算法为:,SIGN(X) = X ./ ABS(X),。,2.6,基本绘图方法,2.6.1,图形窗口的控制,在,MATLAB,中,图形的绘制必须在图形窗中进行。通常,只要执行了任意一种绘图命令,图形窗口,(Figure),就会自动产生。此时,所生成的图形窗口称为当前图形窗,绘图命令所绘制的图形将在当前图形窗中完成。,1,figure,命令,格式:,figure,或,figure(N),功能:创建一个图形窗口。使编号为,N,的图形窗口成为当前图形窗口,即图形窗口处于可视状态。如果窗口,N,不存在,则将创建一个句柄为,N,的图形窗口。,2,clf,命令,:清除当前图形窗口中的所有的内容。,格式:,clf,3,close,命令,:关闭图形窗口,格式一:,close,或,close (N),关闭当前图形窗口或指定编号,N,的图形窗口。,格式二:,close all,关闭所有图形窗口。,4,hold,命令,格式:,hold on (off),功能:保持当前图形窗的内容,或取消,hold on,的命令功能,恢复系统默认状态。通常,,MATLAB,在执行某一绘图命令时,系统会自动将当前图形窗口中的内容清除,然后再绘制。,hold,命令的功能就是保持当前图形窗的内容,使后续绘制函数仍可该图形窗口中完成绘图,实现一张图中绘制多个图形。若再键入,hold,命令就解除冻结。这种拉线开关式的控制有时会造成混乱,可以用,hold on,和,hold off,命令来得到确定的状态。,5,subplot,命令,功能:将一个图形窗口划分为多个子图形窗口,格式:,subplot(m,n,p),或,subplot(nmp,),将图形窗口分成,n,m,个子图形窗口,并选择第,p,个子图形窗口作为当前图形窗口,供绘制函数作图使用。,2.6,基本绘图方法,1.,二维图形绘制命令,plot,MATALB,为用户提供了一个基本的二维曲线绘图函数,plot,。,格式一:,plot(y)-,输入一个数组的情况,功能:如果,y,是一个数组,函数,plot(y),给出线性直角坐标的二维图,该二维图以,y,中元素的下标作为,X,坐标,,y,中元素的值作为,Y,坐标,一一对应画在,XY,坐标平面图上,而且将各点以直线相连。若,y,的元素是复数,则,plot(y),等价于,plot(real(y),imag(y,),,,其中,real(y),是,y,的实部,,imag(y,),是,y,的虚部。若,y,是矩阵,就按列绘制,曲线,曲线的条数等于,y,矩阵的列数。,格式二:,plot(x,y)-,输入两个数组的情况,功能:绘出以,x,元素为横坐标、,y,元素为纵坐标的曲线。数组,x,和,y,必须具有相同长度。,2.6.2,二维图形的绘制,2,线型、标记符号及颜色的设置,为了设定线型、颜色以及标记符号,用户只需在,plot,的输入变量组后面,加一个引号,在引号内部放入线型、颜色以及标记符号的标志符即可完成。,格式一:,plot,(,y,,,字符串),格式二:,plot,(,x, y,,,字符串),3,图形的标注、网格以及图例说明,(1),添加图形标题命令,title,格式:,title(string),功能:在当前坐标系的顶部加一个文本串,string,,,作为该图形的标题。,(2),添加坐标轴标志函数,xlabe,、,ylabel,、,zlabel,格式:,xlabel(text,),或,ylabel(text,),或,zlabel(text,),功能:给当前,X,轴或,Y,轴或,Z,轴标注文本标注。,(3),设置网格线命令,grid,格式:,grid on(off),功能:对当前坐标图加上网格线或撤消网格线。若直接调用,grid,命令即可设置或撤消,网格线。,(4),图形标注函数,legend,格式:,legend( string1, string2, string3, .),功能:在当前图中添加图例。,格式:,Legend off,功能:撤消当前坐标图上的图例。,4,坐标轴的形式与刻度,(1),设置坐标轴函数,axis,格式一:,axis(xmin,,,xmax,,,ymin,,,ymax,),功能:对当前二维图形对象的,X,轴和,Y,轴进行标定。,格式二:,axis(xmin,xmax,ymin,ymax,zmin,zmax,),功能:对当前三维图形对象的,X,、,Y,和,Z,轴进行标定。,格式三:,axis off(on),功能:使坐标轴、刻度、标注和说明变为不显示(显示)状态。,格式四:,axis(manual),功能:将冻结当前的坐标比例,以后的图形均以此比例绘出。,(2),对数坐标轴命令,semilogx,、,semilogy,、,loglog,格式:,semilogx,(.),功能:在,X,轴上采用常用对数来进行标定。该命令的调用格式与,plot,函数的调用格式相同。,格式:,semilogy,(.),功能:在,Y,轴上采用常用对数来进行标定。该命令的调用格式与,plot,函数的调用格式相同。,(3),极坐标函数,polar,格式:,polar(theta,rho,),功能:绘制极角为,theta,极径为,rho,的极坐标图形。,格式:,polar(theta,rho,s,),功能:绘制由,S,指定样式、颜色的极坐标图形。,(4),图形边框控制命令,box,格式:,box on(off),对所绘制的图形添加图形边框,(,默认状态,),,或关闭图形边框。,5.,二维图形其它的相关函数命令,(1),获取函数,ginput,格式:,X,,,Y=,ginput(N,),功能:从当前的坐标图上获得,N,个点的数据,并返回这,N,个点的相应,X,、,Y,坐标向量。,指针可以由鼠标或键盘上的除回车以外的任意键来进行输入,回车键是用来在,N,个数,据点输完以前强行停止输入的。,(2),图形填充函数,fill,格式:,fill( X, Y, C),功能:填充二维多边形,多边形由向量,X,,,Y,来定义,填充的色由,C,来确定。多边形的顶,点是由一组,X,,,Y,元素来确定,必要时应组成一个闭合的曲线。,C,可以从,r,g,b,c,m,k,选出一种色填充也可以是一个,GRB,向量,r,g,b,,,用它来确定所填充的色。,2.6.3,多条曲线的绘制,在,MATALB,中,通常,在一张图上绘制多条曲线有以下,4,种方法。,1,使用,plot(t, y1 ,y2, ),命令,该语句中,t,是向量,,y=y1,y2,是矩阵,若,t,是列向量,则,y,的列,(,行,),长应与,t,长度相同。,Y,的列,(,行,),数就是曲线的条数。,2.,使用,hold,命令,在画完前一张图形后,用,hold,命令保持住该图形窗口中的内容,再画下一条曲线。,3.,利用,plot(x1, y1, x2, y2, .,xn,yn,),语句,在该语句中,,x1, y1, x2, y2, .,xn,yn,等分别为向量对。每一对,X-Y,向量可以绘出一条图线,这样就可以在一张图上画出多图线,每一组向量对的长度可以不同,在其后面都可加线型标志符。,4,使用,plotyy,命令:,plotyy(x1, y1, x2, y2),它设有两个坐标,左纵坐标对应,y1,,,右纵坐标对应,y2,,,以便绘制两个,y,尺度不同,的变量,但,x,仍用同一个比例尺。,2.6.4,复数的绘图,当,plot(z),中的,z,为复数变量时,(,即含有非零的虚部,),,,MATLAB,把复数的实部作为横坐标、虚部作为纵坐标绘图,即相当于,plot(real(z),,,imag(z,),。,2.6.5,三维曲线和曲面,1,空间曲线绘制函数,plot3( ),格式一:,plot3(x,y,z),功能:若,x,、,y,、,z,为相同长度的向量,则根据向量,x,、,y,、,z,绘制空间三维曲线。如果,x,、,y,、,z,为同阶矩阵,则绘制对应列的多条曲线。,格式二:,plot3(x, y, z, s),功能:按字符串,s,设置的线型、颜色、标记符号绘制三维空间曲线。字符串,s,的设置与,plot,命令的设置相同。,2,三维网线图函数,mesh,、,meshc,和,meshz,MATALB,提供的函数,mesh,用来绘制三维网线图。,格式一:,mesh(X,Y,Z),功能:根据矩阵,X,、,Y,和,Z,绘制彩色的空间三维网线图。,X,、,Y,和,Z,中对应的元素为三维空间上的点,点与点之间用线连接。其中网线的颜色随着网点高度的改变而改变。,格式二:,mesh(x,y,Z),功能:,n,维向量,x,、,m,维向量,y,和,mn,矩阵,Z,绘制网线图,节点的坐标为,(x(j),y(i),Z(i,j),,网线的颜色随着网点高度的改变而改变。,3,三维曲面图函数,surf,及,surfc,格式一:,surf(X, Y, Z, C),功能:绘制由四个矩阵所指定的带色参数的网状表面图。视角是由,view,所指定。轴的刻度决定于,X,,,Y,及,Z,的范围,或当前对轴的设定;颜色范围由,C,指定。,格式二:,surf(X,,,Y,,,Z),功能:将,C,设为与,Z,相等,则颜色与网的高度成正比。,4,视图函数,view,格式一:,view(az, el),或,view(az,el, ),功能:设置观察者观察三维图形的视角。,az,是方位角或者是水平旋转角度,,el,是仰角。,格式二:,view(2),或,view(3),功能:设置观察三维图形视角的默认值,(,az,=0,el=90;,az,=-37,el=30),格式三:,az, el=view,功能:返回当前的方位和视角,2.7 M,文件及程序调试与变量属性,M,文件,:由,MATLAB,命令语句构成的程序文件称作,M,文件,它将,m,作为文件的扩展名。可以直接阅读并用任何文本编辑器来建立这种文件。,M,文件可分为两种,:主程序和子程序。,主程序,(,也称主程序文件,),:,一般是由用户为解决特定的问题而编制的程序。,子程序,(,称为函数文件,),:,它必须由其它,M,文件来调用。函数文件往往具有一定的通用性,并且可以进行递归调用。,(1),有关程序的功能、使用方法等内容的注释。主程序前面的若干行通常是程序的注释,,每行以“”开始。,(2),程序的主体。,(3),整个程序应按,MATLAB,标识符的要求起文件名,并加上后缀,m,。,对主程序文件的运行方式通常有两种:,在,MATLAB,的命令窗口中运行:,在,MATLAB,的命令窗中键入此程序的文件名后,系统就开始执行文件中的程序;,在编辑窗口中运行:,通过编辑窗口打开所要运行的文件,然后再运行。主程序文件中的语句可以对,MATLAB,工作空间中的所有数据进行运算操作。,2.7.1 M,文件的结构,主程序文件的格式特征如下:,2,函数文件结构,函数文件是用来定义子程序的。它与主程序文件的主要区别有三点:,(1),由,function,起头,后跟的函数名必须与文件名相同;,(2),有输入输出变元,(,变量,),,可进行变量传递;,(3),除非用,global,声明,程序中的变量均为局部变量,不保存在工作空间中。,通常,函数文件由五部分构成:,函数定义行;,H1,行;,函数帮助文本;,函数体;,注释。,函数定义命令,function( ),格式:,function output1,output2,=functionname(input1,input2,.),功能:定义函数名为,functionname,的,函数,(,或子程序,),,该函数的输出变量为,output1,output2,,,输出变量为,(input1,input2,.),。,例如:,function y=mean(x,dim),function,为函数定义的关键字,,mean,为函数名,,y,为输出变量,,x,和,dim,为输入变量。,注意,:当函数具有多个输出变量时,则以方括号括起;当函数具有多个输入变量时,则直接用圆括号括起。例如:,functionx,,,y,,,z,sphere(theta,,,phi,,,rho,),。,当函数不含输出变量时,则直接略去输出部分或采用空方括号表示。,2.7.2,局部变量与全局变量,通常,在,MATALB,工作空间中,变量有三类:,由调用函数传递输入和输出数据的变量;,在函数内临时产生的变量,称为局部变量,由调用函数空间、基本工作空间或其它函数工作空间提供的变量,称为全局变量。,在,MATLAB,中对变量以及全局变量管理提供了以下的命令:,1,.global,格式,:,global X Y Z,功能,:,将变量,X,、,Y,、,Z,定义成全局变量。,2,Pers,i,stent,格式,:,persistent X Y Z,功能,:,将变量,X,、,Y,、,Z,定义成永久变量,。,persistent,函数只用于函数文件中,,,使在每次,调用时保持变量的值不变。,2.7.3,程序的调试,1.MATLAB,的主程序的调试:,MATLAB,的查错能力很强,加上工作空间中变量的保存和显示功能不需要专门的调试命令,因此,主程序的调试很方便地进行。,2.,函数程序的调试:,因为在函数程序中出错而停机时,其变量不作保存。虽然它也会指出出错的语句,但因为子程序中的变量,(,局部变量,),在程序执行完毕后会自动消失,其它现场数据又无记录,会给调试带来很大困难。可采用下列措施:,(1),把某些分号改为逗号,使中间结果能显示在屏幕上,作为查错的依据。,(2),在子程序中适当部位加,keyboard,命令,到了此处,系统会暂停而等待用户键入命令。这时子程序中的变量还存于工作空间中,可以对它进行检查。,(3),将函数文件的第一行前加“,%”,号,使它成为程序文件来作初步调试。第一行中的输入变元,可改用,input,或赋值语句来输入,调试好后再改回为函数文件。,(4),在程序中使用以下人机交互命令,也可大大提高程序的调试程度。,
展开阅读全文