




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MATLAB基础知识MATLAB的主要功能1数值计算和符号计算功能例如,求解线性方程组在MATLAB命令窗口输入命令:a=2,3,-1;3,-5,3;6,3,-8; b=7;8;9; x=inv(a)*b也可以通过符号计算来解此方程syms x1 x2 x3x1,x2,x3=solve(2*x1+3*x2-x3-7,3*x1-5*x2+3*x3-8,6*x1+3*x2-8*x3-9)2绘图功能例如,分别绘制函数y=300sinx/x和y=x2的曲线x=-20:0.1:20;plot(x,300*sin(x)./x,:,x,x.2);3程序设计语言功能MATLAB是解释性语言,程序执行速度较慢,而且不能脱离MATLAB环境而独立运行。MathWorks公司提供了将MATLAB源程序编译为独立于MATLAB集成环境运行的EXE文件以及将MATLAB程序转化为C语言程序的编译器。4扩展功能MATLAB包含两部分内容:基本部分和各种可选的工具箱。基本部分构成了MATLAB的核心内容,也是使用和构造工具箱的基础。工具箱扩展了MATLAB的功能。功能性工具箱学科性工具箱MATLAB的集成开发环境命令窗口(Command Window)用于输入命令并显示除图形以外的所有执行结果。一般来说,一个命令行输入一条命令,命令行以回车或分号结束但一个命令行也可以输入若干条命令,各命令之间以逗号或分号隔开如果一个命令行很长,一个物理行之内写不下,可以在第1个物理行之后加上3个小黑点并按下回车键,然后接着下一个物理行继续写命令的其他部分。3个小黑点称为续行符,即把下面的物理行看作该行的逻辑继续。例如:z=1+1/(1*2)+1/(1*2*3)+1/(1*2*3*4)+ 1/(1*2*3*4*5)工作空间(Workspace)是MATLAB用于存储各种变量的内存空间。当前目录(Current Directory)是指MATLAB运行时的工作目录,只有在当前目录下的文件、函数才可以被运行或调用。如果没有特殊指明,数据文件也将存放在当前目录下。 命令历史窗口自动保留自安装起所有用过的命令的历史记录,并且还标明了使用时间,从而方便用户查询。而且,通过双击命令可进行历史命令的再运行。MATLAB的帮助功能进入MATLAB帮助界面可以通过以下方法。单击MATLAB主窗口工具栏中的Help按钮。输入帮助命令。帮助命令1help命令在命令窗口中直接输入help命令将会显示当前帮助系统中所包含的所有项目。help加函数名:显示该函数的帮助说明。例如 help magic2lookfor命令例如 lookfor fourier演示系统在命令窗口输入“demos”,或者选择主窗口“Help”菜单中的“Demos”子菜单,打开的演示系统如图所示。MATLAB的变量和数据操作预定义变量 1变量命名变量名只能是以字母开头,后接字母、数字或下画线的字符序列,最多63个字符。例如x、x_1、xy12在MATLAB中,变量名区分字母的大小写。例如addr、Addr和ADDR表示3个不同的变量。2赋值语句MATLAB赋值语句有两种格式:(1)变量=表达式;(2)表达式第1种语句形式下,MATLAB将右边表达式的值赋给左边的变量第2种语句形式下,将表达式的值赋给MATLAB的预定义变量ans。在语句的最后加分号,那么,MATLAB仅仅执行赋值操作,不再显示运算的结果。注释以%开头计算表达式 的值,并将结果赋给变量y,然后显示出结果。x=sqrt(1+pi);y=(exp(x)+log(abs(sin(x)2-sin(x*x)/(x-5*i) y = 0.5690 + 1.3980i其中,pi和i都是MATLAB定义的变量,分别代表圆周率和虚数单位。预定义变量3. 变量的管理变量的显示与删除显示whowhos 还给出它们的维数、所占字节数以及变量的类型。删除clcclear变量文件利用MAT文件可以把当前MATLAB工作空间中的一些有用变量长久地保留下来。MAT文件是MATLAB保存数据的一种标准格式二进制文件,扩展名是.mat。MAT文件的生成和装入save 文件名 变量名表 -append-asciiload 文件名 变量名表 -ascii数据的输出格式输入x=4/3 1.2345e-6系统默认 小数点后四位用format命令设置数据输出格式 format 格式符短格式(short):1.3333 0.0000短格式e方式(short e):1.333e+00 1.2345e-06长格式(long):1.33333333333333 0.00000123450000长格式e方式(long e):1.33333333333333e+000 1.23450000000000e-006银行格式(bank):1.33 0.00十六进制格式(hex):3ff5555555555555 3eb4b6231abfd271MATLAB矩阵及基本运算矩阵的生成1直接输入法将矩阵的所有元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。矩阵元素也可以是表达式,MATLAB将自动计算结果。例如:B=10,5-sqrt(7),sin(pi/2);7,4*8,abs(-7)矩阵元素可以是复数 虚部i 也可以分别建立实部矩阵和虚部矩阵,再合起来构成复数矩阵。例如: R=1,2,3;4,5,6; I=1.1,2.2,3.3;4.4,5.5,6.6; ri=R+i*I利用已建好的矩阵建立更大的矩阵例如:A=1,2,3;4,5,6;7,8,9;B=11:13;14:16;17:19;C=A,B;B,A2. 冒号表达式利用冒号可以产生行向量。冒号表达式的一般格式为 a:b:c其中,a为初始值,b为步长,c为终止值(ca)。例如:t=0:2:10t = 0 2 4 6 8 10还可以用linspace函数产生行向量。其调用格式为linspace(a,b,n)其中a和b是生成向量的第1个和最后一个元素,n是元素总数。当n省略时,自动产生100个元素。显然,linspace(a,b,n)与a:(ba)/(n1):b等价。矩阵(元素)的替换、提取和矩阵拆分如果想将矩阵A的第2行第3列的元素赋为76,则可以通过下面语句来完成:A(2,3)=76 不影响其他元素的值。也可以采用矩阵元素的序号来引用矩阵元素。矩阵元素按列编号,先第1列,再第2列,依次类推。以mn矩阵A为例,矩阵元素A(i, j)的序号为(j1)*m+i。 size(A)函数返回包含两个元素的向量,分别是矩阵A的行数和列数 length(A):给出行数和列数中的较大者利用冒号表达式获得子矩阵 A(m,n)表示取A矩阵第m行、第n列的元素 A(m,:)表示取A矩阵第m行的全部元素 A(:,n)表示取A矩阵的第n列全部元素 A(m1:m2,:)表示取A矩阵第m1m2行的全部元素 A(:,n1:n2)表示取A矩阵第n1n2列的全部元素, A(m1:m2,n1:n2)表示取A矩阵第m1m2行内,并在第n1n2列中的所有元素。利用空矩阵删除矩阵的元素空矩阵是指无任何元素的矩阵,表示形式为 。给变量x赋空矩阵的语句为x= 将某些元素从矩阵中删除,采用将其置为空矩阵的方法就是一种有效的方法。例如:A=1 2 3 4 5 6;7 8 9 10 11 12;13 14 15 16 17 18;A(:,2 4)= 算术运算MATLAB的基本算术运算有:+(加)、(减)、*(乘)、/(右除)、(左除)、(乘方)。(1)矩阵加减运算运算规则是:若A和B矩阵的维数相同,则可以执行矩阵的加减运算,A和B矩阵的相应元素相加减。如果A与B的维数不相同,则MATLAB将给出错误信息,提示用户两个矩阵的维数不匹配。一个标量也可以和其他不同维数的矩阵进行加减运算。例如:x=2,-1,0;3,2,-4;y=x-1;y=y+x(2)矩阵乘法 矩阵A和B进行乘法运算,要求A的列数与B的行数相等,或称A和B两矩阵维数相容。如果两者的维数不相容,则将给出错误信息,提示用户两个矩阵是不可乘的。例如:A=1,2,3;4,5,6;B=A*A? Error Inner matrix dimensions must agree.在MATLAB中,还可以进行矩阵和标量相乘。矩阵和标量相乘是矩阵中的每个元素与此标量相乘。(3)矩阵除法在MATLAB中,有两种矩阵除法运算:和/,分别表示左除和右除。如果A矩阵是非奇异方阵,则AB和B/A运算可以实现。AB等效于A的逆左乘B矩阵,也就是inv(A)*B,而B/A等效于A矩阵的逆右乘B矩阵,也就是B*inv(A)。(4)矩阵的乘方一个矩阵的乘方运算可以表示成Ax,要求A为方阵,x为标量。2点运算两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。点运算符有.*、./、.和.。例如:A=1,2,3;4,5,6;7,8,9;B=-1,0,1;1,-1,0;0,1,1;C=A.*BC = -1 0 3 4 -5 0 0 8 9如果A、B两矩阵具有相同的维数,则A./B表示A矩阵除以B矩阵的对应元素。B.A等价于A./B。 3MATLAB常用数学函数 例如:y=sin(0:pi/2:2*pi)y = 0 1.0000 0.0000 -1.0000 -0.0000y=abs(y)y = 0 1.0000 0.0000 1.0000 0.0000abs函数可以求实数的绝对值、复数的模、字符串的ASCII码值。x=-3.14,3+4i;abs(x)ans = 3.1400 5.0000用于取整的函数有fix、floor、ceil、round向0方向取整函数fix:调用格式为I=fix(X),功能:返回X中每个元素的最靠近零的整数,若X为复数,则分别对X实部和虚部取整。向-方向取最小整数函数floor向方向取最大整数函数ceil四舍五入取整函数round模数余函数mod:调用格式为M=mod(X,Y),功能:返回X关于Y的余数,其算法为:mod(X,Y)=x-y.*floor(X./Y) 例如:x1=mod(16,3) x2=mod(-16,3) x3=mod(16,-3)x1= x2= x3=1 2 -2除后余数函数rem:调用格式为M=rem(X,Y),功能:返回X关于Y的余数,其算法为:rem(X,Y)=x-y.*fix(X./Y) ,相当于去零留整,与C语言中取余%功能相同例如:x1=rem(16,3) x2=rem(-16,3) x3=rem16,-3)x1= x2= x3=1 -1 1符号函数sign:调用格式为sign(X),功能:若X0,返回1;若X=0,返回0;若Xname=Thomas R.Lee;whos name Name Size Bytes Class Attributes name 113 26 charclass和ischar函数都能认识变量name是字符数组。class(name) ischar(name)ans= ans=char 1可以使用字串连接函数strcat和strvcat,或者使用连接运算符 把两个或多个字符数组连接在一起,形成一个新字符数组,先认识下面两个函数:strcat函数调用格式:t=strcat(s1,s2,s3,.),strcat函数横向连接字符数组s1、s2、s3等对应的行,所有的输入数组必须有相同的行数(或任意一个是单一字串),输入字符数组中的尾部空格被忽略,不出现在输出中,但字串单元数组中的尾部空格会保留。而使用连接运算符 时,会保留尾部空格,这是它和strcat函数的的区别。例如:s1=everybody;s2=goodbye;strcat(s1,s2)ans=everybodygoodbyet=s1,s2t=everybody goodbyestrvcat函数调用格式为:S=strvcat(t1,t2,t3,.),strvcat函数纵向连接字符数组t1、t2、t3等,形成一个新字符数组S。Strvcat在较短的字串后添加空格,以便与最长的字串等长,输入的空数组会被忽略。例如:命令strvcat(Hello,MAT)和Hello,MAT 基本一样,不同的是strvcat函数在MAT后面加了3个空格。strvcat(Hello,MAT) Hello,MAT ans= ans=Hello HelloMAT MAT建立二维数组:一定保证每一行都有相同的长度,当几个不同长度的字串建立字符数组时,可以人为的在较短的字串后添加空格,强制每行都有一样的长度例如:name1=Thomas R.Lee ,Senior Developer;%有3个空格建立字符数组一个简单方法是用char函数。Char能够自动对所有字串添加尾部空格,使它们与最长的输入字串等长,还是上面字串,可用char函来建立:name2=char(Thomas R.Lee,Senior Developer)Name2=Thomas R.LeeSenior Developer字串比较strcmp函数调用格式为k=strcmp(str1,str2),功能:比较字串str1和str2,相等则k=1,否则k=0例:k=strcmp(Hi,Hello)K=0 %k=0表示两个字串不相等strncmp函数调用格式为k=strncmp(str1,str2,n),功能:比较字串str1和str2前面n个字符,相等则k=1,否则k=0例:k=strncmp(Hi,Hello,1)K=1 %k=1表示两个字串前1个相等strcmpi函数调用格式为k=strcmpi(str1,str2),功能与strcmp一样只是不区分大小写。4 strncmpi函数调用格式为k=strncmpi(str1,str2,n),功能与strncmp一样只是不区分大小写。比较字串中的单个字符,直接使用关系运算符即可例:A=adbddf;B=ddbaaf;A=Bans=0 1 1 0 0 1关系运算(小于)、(大于)、=(大于或等于)、=(等于)、=(不等于)若关系成立,关系表达式结果为1,否则为0。例如:A=5A = 5A=A =10A = 0当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素逐个进行,并给出比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。 当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。最终的运算结果是一个维数与矩阵相同的矩阵,它的元素由0或1组成。 逻辑运算&(与)、|(或)和(非)。此外,MATLAB还提供了4个逻辑运算函数:and(a,b)、or(a,b)、not(a)和xor(a,b)。在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。例如:A = 23,54,12,6,-78;B = 5,324,7,-43,76;C1 = A10 & B10,B=10 & A=a&ch=z); %找小写字母的位置ch(k)=ch(k)-(a-A); %将小写字母变成相应的大写字母char(ch) length(k) %统计小写字母的个数ans = 14(1)若字符串中的字符含有单撇号,则该单撇号字符应用两个单撇号来表示。例如:disp(Its a book.)将输出:Its a book.(2)可以用字符串向量的形式连接多个字符串,即用中括号括起来。例如:x=8; y=10;disp(num2str(x), + ,num2str(y), = ,num2str(x+y)其中disp函数的自变量是一个长字符串。输出为8 + 10 = 18MATLAB程序设计 学习目标 掌握建立和执行M文件的方法。 掌握利用if语句、switch语句实现选择结构的方法。 掌握利用for语句、while语句实现循环结构的方法。 熟悉利用向量运算来代替循环操作的方法。 掌握定义和调用MATLAB函数的方法。M文件M文件的建立与打开M文件可以根据调用方式的不同分为两类:命令文件(Script File)和函数文件(Function File)(1)命令文件没有输入参数,也不返回输出参数,而函数文件可以带输入参数,也可返回输出参数。(2)命令文件对MATLAB工作空间中的变量进行操作,文件中所有命令的执行结果也完全返回到工作空间中,而函数文件中定义的变量为局部变量,当函数文件执行完毕时,这些变量被清除。(3)命令文件可以直接运行,在MATLAB命令窗口输入命令文件的名字,就会顺序执行命令文件中的命令,而函数文件不能直接运行,而要以函数调用的方式来调用它。1数据的输入从键盘输入数据,可以使用input函数来进行,该函数的调用格式为A=input(提示信息,选项);提示信息为一个字符串,用于提示用户输入什么样的数据。例如,从键盘输入A矩阵,可以采用下面的命令来完成:A=input(输入A矩阵:);s选项允许用户输入一个字符串。例如,想输入一个人的姓名,可采用命令:xm=input(Whats your name?,s);2数据的输出数据的输出主要采用disp函数,其调用格式为disp(输出项)其中,输出项既可以为字符串,也可以为矩阵。例如:A=Hello,World!;disp(A)程序控制结构顺序结构顺序结构是指按照程序中语句的排列顺序依次执行。例 求一元二次方程ax2+bx+c=0的根。直接根据求根公式求根。a=input(a=?);b=input(b=?);c=input(c=?);d=b*b-4*a*c;x=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a);disp(x1=,num2str(x(1),x2=,num2str(x(2);程序的暂停当程序运行时,有时需要暂停程序的执行,可以使用pause函数,其调用格式为pause(延迟秒数)如果省略延迟时间,则将暂停程序,直到用户按任一键后程序继续执行。若要强行中止程序的运行可使用Ctrl+C组合键。选择结构选择结构是根据给定的条件成立或不成立,分别执行不同的语句。1if语句(1)单分支if语句:if 条件 语句块end当条件成立时,则执行语句组,执行完之后继续执行if语句的后继语句,若条件不成立,则直接执行if语句的后继语句。(2)双分支if语句:if 条件 语句块1else 语句块2end当条件成立时,执行语句组1,否则执行语句组2,语句组1或语句组2执行后,再执行if语句的后继语句。例 计算分段函数 :程序如下:x=input(请输入x的值:);if x=A & c=a& c=0& c=9 disp(str2num(c)2);else disp(c);end2switch语句switch语句根据表达式的取值不同,分别执行不同的语句,其语句格式为switch 表达式 case 结果表1 语句块1 case 结果表2 语句块2 case 结果表n 语句块n otherwise 语句块n+1 endswitch后面的表达式应为一个标量或一个字符串,case后面的结果不仅可以为一个标量或一个字符串,而且还可以为一个将多个结果用大括号括起来的单元数据。如果case后面的结果为一个单元数据,则表达式的值等于该单元数据中的某个元素时,执行相应的语句组。例 将上例改用switch语句实现。c=input(请输入一个字符:,s);cc=abs(c);switch(cc) case num2cell(abs(A):abs(Z) disp(lower(c); case num2cell(abs(a):abs(z) disp(upper(c); case num2cell(abs(0):abs(9) disp(abs(c)-abs(0)2); otherwise disp(c);endnum2cell函数是将数值矩阵转化为单元数据,num2cell(1:5)等价于1,2,3,4,5。循环结构循环是指按照给定的条件,重复执行指定的语句。1for语句for 循环变量=表达式1:表达式2:表达式3 循环体语句end其中,表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。例 一个3位整数,各位数字的立方和等于该数本身则称该数为水仙花数,输出全部水仙花数。shu=; %用于存放结果,先赋空值for m=100:999 m1=fix(m/100); %求m的百位数字 m2=rem(fix(m/10),10); %求m的十位数字 m3=rem(m,10); %求m的个位数字 if m=m1*m1*m1+m2*m2*m2+m3*m3*m3 shu=shu,m; %存入结果 endendshu2while语句while(条件) 循环体语句end例 求使 最小的n。程序如下:y=0;n=0;while (y1 & n1) | (m=1 & n=1) error(Input must be a vector)ends=sum(v); %求向量和m=s/length(v); %求向量平均值将以上函数文件以文件名fvector.m存盘,然后在MATLAB命令窗口调用该函数:s,p=fvector(1:10)注释说明包括如下3部分内容。紧随函数文件引导行之后以%开头的第一注释行。这一行一般包括大写的函数文件名和函数功能简要描述,供lookfor关键词查询和help在线帮助用。第一注释行及之后连续的注释行通常包括函数输入输出参数的含义及调用格式说明等信息,构成全部在线帮助文本。相隔一空行的注释行包括函数文件编写和修改的信息,如作者、修改日期、版本等内容,用于软件档案管理。例 利用函数的递归调用,求n!。求n!需要求(n1)!,可采用递归调用。function f=factor(n)if n=1 f=1;else f=factor(n-1)*n; %递归调用求(n-1)!end【课堂练习】编写函数文件,实现直角坐标(x,y)与极坐标(,)之间的转换。function rho,theta=tran(x,y)rho=sqrt(x*x+y*y);theta=atan(y/x);全局变量与局部变量在MATLAB中,函数文件中的变量是局部的,即在一个函数文件中定义的变量不能被另一个函数文件引用。如果在若干函数中,都把某一变量定义为全局变量,那么这些函数将公用这一个变量。全局变量的作用域是整个MATLAB工作空间,即全程有效,所有的函数都可以对它进行存取和修改。全局变量用global命令定义,格式为global 变量名程 序 调 试应用程序的错误有两类,一类是语法错误,另一类是运行时的错误。语法错误包括语法或文法的错误,如函数名拼写错、表达式书写错、数据类型错误等。MATLAB能够检查出大部分的语法错误,给出相应错误信息,并标出错误在程序中的行号。程序运行时的错误是指程序的运行结果有错误,这类错误也称为程序逻辑错误。MATLAB系统对逻辑错误是无能为力的,不会给出任何提示信息。这时可以通过一些调试手段来发现程序中的逻辑错误,最常见的办法是通过获取中间结果的方式来获取错误可能发生的程序段,以便进一步分析错误的原因。1控制单步运行(1)Step:单步运行。每单击一次,程序运行一次,但不进入函数。(2)Step In:单步运行。遇到函数时进入函数内,仍单步运行。(3)Step Out:停止单步运行。如果是在函数中,跳出函数;如果不在函数中,直接运行到下一个断点处。(4)Go Until Cursor:直接运行到光标所在的位置。2断点操作(1)Set/Clear Breakpoint:设置或清除断点。(2)Set/Modify Conditional Breakpoint:设置或修改条件断点。条件断点可以使程序执行到满足一定条件时停止。(3)Enable/Disable Breakpoint:使断点有效或无效。(4)Clear Breakpoints in All Files:清除所有断点。(5)Stop If Errors/Warnings:在程序执行出现错误或警告时,停止程序运行,进入调试状态,不包括trycatch语句中的错误。程序性能分析通过函数文件性能评估器(Profiler)用户可以很方便地了解程序执行过程中各函数及函数中的每条语句所耗费的时间,从而有针对性地改进程序,提高程序的运行效率。在MATLAB主窗口的“Desktop”菜单中选择“Profiler”命令或在M文件编辑器的“Tools”菜单中选择“Open Profiler”命令,屏幕上将出现Profiler性能评估器,如图所示。在“Run this code”编辑框中输入一个M文件名(如ch01031)后,单击Start Profiling命令按钮或按回车键启动分析。ch01031.m中的代码如下:x=-20:0.1:20;y=300*sin(x)./x;plot(x,y);检测综述报表提供了运行文件的时间和相关函数的调用频率,反映出整个程序耗时7.052s,其中执行与绘制图形中调用的newplot函数耗时最多。单击某函数名,则打开相应函数的详细报告。程序优化(1)向量化。例 计算 ,当n=100时,求y的值。用循环结构实现y=0;n=100;for i=1:n y=y+1/i;endy采用向量求和的方法n=100;i=1:n;f=1./i;y=sum(f)(2)预分配内存空间。通过在循环之前预分配向量或数组的内存空间可以提高for循环的处理速度。例如,下面的代码用函数zeros预分配for循环中用到的向量a的内存空间,使得这个for循环的运行速度显著加快。程序1:clear;a=0;for n=2:1000 a(n)=a(n-1)+10;end程序2:clear;a=zeros(1,1000);for n=2:1000 a(n)=a(n-1)+10;end程序2采用了预定义矩阵的方法,运行时间比程序1要短。(3)减小运算强度。采用运算量更小的表达式,一般来说,乘法比乘方运算快,加法比乘法运算快,位运算比求余运算快。例如:clear;a=rand(32); %生成一个3232的矩阵x=a.3;y=a.*a.*a;从Profiler的评估报告中可以看出,a.*a.*a运算比a.3运算所花的时间少得多。二维曲线1plot函数plot(x,y)其中x和y为大小相同的向量,分别用于存储x坐标和y坐标数据。例t=0:0.1:8*pi;x=cos(t)+t.*sin(t);y=sin(t)-t.*cos(t);plot(x,y);(1)当x和y是同维矩阵时,配对的x、y按对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。例如,在同一坐标中绘制3条幅值不同的正弦曲线x=0:pi/10:2*pi;y=sin(x);plot(x;x;x,y;y*2;y*3)当x是向量,y是有一维与x同维的矩阵时,则绘制出多根曲线,曲线条数等于y矩阵的另一维数,x被作为这些曲线共同的横坐标。x=0:pi/10:2*pi;y=sin(x);plot(x,y;y*2;y*3)(2)当plot函数只有一个输入参数时,即plot(y)若y是实型向量,则以该向量元素的下标为横坐标、元素值为纵坐标画出一条连续曲线;若y是复数向量,则分别以向量元素实部和虚部为横、纵坐标绘制一条曲线。若y是实矩阵,则按列绘制每列元素值相对其下标的曲线,曲线条数等于输入参数矩阵的列数;若y是复数矩阵,则按列分别以元素实部和虚部为横、纵坐标绘制多条曲线。(3)当plot函数有多个输入参数,且都为向量时,即plot(x1,y1,x2,y2,xn,yn)其中,x1和y1,x2和y2,xn和yn分别组成一组向量对,每一组向量对的长度可以不同。每一向量对可以绘制出一条曲线,这样可以在同一坐标内绘制出多条曲线。例如,在同一坐标中绘制3条幅值不同的正弦曲线,命令也可以写成:x=0:pi/10:2*pi;y=sin(x);plot(x,y,x,y*2,x,y*3)2具有两个纵坐标标度的图形绘制出具有不同纵坐标标度的两个图形,可以使用plotyy绘图函数。这种图形有利于图形数据的对比分析。plotyy(x1,y1,x2,y2)其中,x1和y1对应一条曲线,x2和y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1、y1数据对,右纵坐标用于x2、y2数据对。3.设置曲线样式在plot函数中加绘图选项,其调用格式为plot(x1,y1,选项1,x2,y2,选项2,xn,yn,选项n)注意:选项缺省默认实现连接,颜色随机,选项需用 括起来例 在同一坐标内,分别用不同线型和颜色绘制曲线y1=0.2e0.5xcos(4px)和y2=1.5e0.5x cos(px)。程序如下:x=linspace(0,2*pi,1000);y1=0.2*exp(-0.5*x).*cos(4*pi*x);y2=1.5*exp(-0.5*x).*cos(pi*x);plot(x,y1,x,y2,k:);4. 图形标注与坐标控制1) 图形标注title(图形名称)xlabel(x轴说明 )ylabel(y轴说明)text(x,y,图形说明) 在(x,y)坐标处添加图形说明legend(图例1,图例2,)用于绘制曲线所用线型、颜色或数据点标记图例添加文本说明也可用gtext命令,执行该命令时,十字坐标光标自动跟随鼠标移动,单击鼠标即可将文本放置在十字光标处,如命令gtext(cos(x),即可放置字符串cos(x)。例:在0x2区间内,绘制曲线y1=e0.5x和y2=cos(4px)e0.5x,并添加图形标注。x=0:pi/100:2*pi;y1=exp(-0.5*x);y2=exp(-0.5*x).*sin(2*x);plot(x,y1,x,y2)title(x from 0 to 2pi);xlabel(Variable X);ylabel(Variable Y);text(1.5,0.5,曲线y1=e-0.5x);text(3,-0.1,曲线y2=cos(4pix)e-0.5x); %有点错误,自行修改legend(y1,y2)2)坐标控制根据要绘制曲线数据的范围选择合适的坐标刻度axis(xmin xmax ymin ymax)axis函数的其他用法axis equal:纵、横坐标轴采用等长刻度。axis square:产生正方形坐标系(默认为矩形)。axis on/off:显示/取消坐标轴。grid on/off命令控制是画还是不画网格box on/off命令控制是加还是不加边框线hold on/off命令控制是否保持该图形窗ginput( )用鼠标从二维图形上获取n个点的数据坐标。调用格式:【x,y,button】=ginput(n)n为通过鼠标从图上获取的数据点的数目x 存放n个数据点的横坐标y 存放n个数据点的纵坐标button 存放每次按下鼠标键的标号 1左键 2中键 3右键例 用鼠标左键取点,每个点在屏幕上作一个圆圈标记,然后连成折线,最后用鼠标在图中适当位置写一行标注文字:用左键取点,然后画折线。axis(0 5 0 5); hold on; box on;x= ;y= ;while (1)x1,y1,button=ginput(1);if(button=1)break;endplot(x1,y1,o);x=x,x1;y=y,y1;end line(x,y); % line函数是将x为横坐标y为纵坐标画出的相应点连起来hold offgtext(用左键取点,然后画折线);使用plot函数绘图时,都是等间隔取点,然后连接成曲线,因此点不能过少,否则画出来的图形失真。(莱奎斯特定律,数字信号处理将学习)fplot函数可自适应地对函数进
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 象山室内装修知识培训课件
- 谢谢你课件教学课件
- 2025年防水材料行业技术培训与咨询服务合同
- 2025版汽车吊吊装设备租赁服务合同规范
- 2025不锈钢罐体定制加工、安装及验收标准合同范本
- 2025版新型环保外墙保温与瓷砖装饰一体化工程合同
- 2025年度房产建筑工程质量保修与售后咨询服务合同
- 2025年房地产项目绿色节能改造工程承包合同
- 2025短视频平台广告投放效果跟踪及评估合同
- 2025年绿色环保产品展示会场地布置与服务合作协议
- 国庆节英语介绍模板
- 《油气管道无人机智能巡检系统技术管理规范》
- 巡察工作基本流程课件
- 游艇火灾安全知识培训课件
- (2025年标准)学生玩耍纠纷协议书
- GB 46030-2025建筑用安全玻璃安全技术要求
- 2025年新《中华人民共和国安全生产法》知识竞赛测试题库含答案
- (2025年标准)茶楼入股合同协议书
- 养老院员工奖惩管理制度范本
- 2025全球人形机器人企业能力画像整机能力评估模型V2.0
- 统编版(2024)七年级上册语文教学计划及进度表
评论
0/150
提交评论