收藏 分享(赏)

1第1章仿真软件-MATLAB.ppt

上传人:gnk289057 文档编号:7972512 上传时间:2019-06-01 格式:PPT 页数:124 大小:429.50KB
下载 相关 举报
1第1章仿真软件-MATLAB.ppt_第1页
第1页 / 共124页
1第1章仿真软件-MATLAB.ppt_第2页
第2页 / 共124页
1第1章仿真软件-MATLAB.ppt_第3页
第3页 / 共124页
1第1章仿真软件-MATLAB.ppt_第4页
第4页 / 共124页
1第1章仿真软件-MATLAB.ppt_第5页
第5页 / 共124页
点击查看更多>>
资源描述

1、1,本章内容 (1) MATLAB的基本数学函数和常用命令的使用; (2) MATLAB的m文件的建立与使用; (3) MATLAB的矩阵元素的输入及特殊矩阵的实现; (4) MATLAB的矩阵运算和向量运算; (5) MATLAB的外部命令调用方法; (6) MATLAB的基本输入/输出函数及其应用; (7) MATLAB的关系运算和逻辑运算; (8) MATLAB的条件转移语句、循环语句等常用控制语句的使用; (9) MATLAB的基本绘图、字符添加、图形控制和图形修饰命令。,第一章 仿真软件MATLAB,2,1.1 MATLAB简介 1.1.1 概述,一、MATLAB语言的显著特点 1、

2、具有强大的矩阵运算能力:Matrix Laboratory(矩阵实验室),使得矩阵运算非常简单。 2、是一种演算式语言 MATLAB的基本数据单元是既不需要指定维数,也不需要说明数据类型的矩阵(向量和标量为矩阵的特例),而且数学表达式和运算规则与通常的习惯相同。因此MATLAB语言编程简单,使用方便。,3,较为常见的MATLAB工具箱主要有:,)通讯工具箱(Communications Toolbox); )控制系统工具箱(Control Systems Toolbox); )数据获得工具箱(Data Acquisition Toolbox); )数据库工具箱(Database Toolbox

3、); )滤波器设计工具箱(Filter Design Toolbox); )模糊逻辑工具箱(Fuzzy Logic Toolbox);)图象处理工具箱(Image Processing Toolbox);,4,)映射工具箱(Mapping Toolbox); )神经网络工具箱(Neural Network Toolbox); )优化工具箱(Optimization Toolbox); )鲁棒控制工具箱(Robus Control Toolbox); )信号处理工具箱(Signal Processing Toolbox); )统计学工具箱(Statistics Toolbox); )系统辨识工具

4、箱(System Identification Toolbox); )小波分析工具箱(Wavelet Toolbox)。,5,MATLAB启动后将出现如图1-1所示的命令窗口。在MATLAB命令窗口中的“”标志为MATLAB的命令提示符,“|”标志为输入字符提示符。如果用户是第一次使用MATLAB,则建议首先在命令行中键入demo命令,它将启动MATLAB的演示程序,用户可以在这些演示程序中领略到MATLAB所提供的强大的运算和绘图功能。,6,1.2 MATLAB的基本操作,1.2.1 MATLAB语言的结构,7,MATLAB命令窗口就是 MATLAB语言的工作空间,因为MATLAB的各种功能

5、的执行必须在此窗口下才能实现,在这种环境下输入的MATLAB语句称为“窗口命令”。所谓窗口命令,就是在上述环境下输入的MATLAB语句,并直接执行它们完成相应的运算、绘图等。1、 MATLAB语句的一般形式为变量名表达式,8,其中 等号右边的表达式可由操作符或其它字符、函数和变量名组成,它可以是MATLAB允许的数学或矩阵运算,也可以包含MATLAB下的函数调用;等号左边的变量名为MATLAB语句右边表达式的返回值语句所赋值的变量的名字。在调用函数时,MATLAB允许一次返回多个结果,这时等号左边的变量名需用 括起来,且各个变量名之间用逗号分隔开,如果左边的变量名缺省时返回值自动赋给ans。,

6、9,2、命令行编辑器 (1)方向键和控制键可以编辑修改已输入的命令:回调上一行命令 :回调下一行命令 (2)命令窗口的分页输出 more off:不允许分页 more on:允许分页 more(n):指定每页输出的行数 回车前进一行,空格键显示下一页,q结束当前显示。 (3)多行命令() 如果命令语句超过一行或者太长希望分行输入,则可以使用多行命令继续输入。 S=1-12+13+4+ 9-4-18;,10,表1-1 MATLAB中的算术运算符,MATLAB中使用的算术运算符如表1-1所示。对于矩阵来说,这里左除和右除表示两种不同的除数矩阵和被除数矩阵的关系。对于标量,两种除法运算的结果相同,如

7、1/4和41有相同的值0.25。常用的十进制符号如小数点、负号等,在MATLAB中也可以同样使用,表示10的幂次要用符号e或E,如:3、-99、0.0001、1.6e-20、6.2e23。,11,在MATLAB中变量名必须以字母开头,之后可以是任意字母、数字或者下划线(不能超过19个字符),但变量中不能含有标点符号。变量名区分字母的大小写,同一名字的大写与小写被视为两个不同的变量。一般说来,在MATLAB下变量名可以为任意字符串,但MATLAB保留了一些特殊的字符串如表1-2所示。,12,表1-2 MATLAB中的特殊变量,13,MATLAB命令语句能即时执行,它不是输入完全部MATLAB命令

8、语句经过编译、连接形成可执行文件后才开始执行,而是每输入完一条命令,MATLAB就立即对其处理,并得出中间结果,完成了MATLAB所有命令语句的输入,也就完成了它的执行,直接便可得到最终结果。从这一点来说,MATLAB清晰地体现了类似“演算纸”的功能。例如 a=5; b=6; c=a*b,结果显示C=30,14,MATLAB语句既可由分号结束,也可由逗号或换行号结束,但它们的含义是不同的。如果用分号 “;”结束,则说明除了这一条命令外还有下一条命令等待输入,MATLAB这时将不立即显示运行的中间结果,而等待下一条命令的输入,如以上前两条命令;如果以逗号 “,”或回车结束,则将把左边返回的内容全

9、部显示出来,如以上后两条命令。当然在任何时候也可输入相应的变量名来查看其内容。如,15,在MATLAB中,几条语句也可以出现在同一行中,只要用分号或逗号将它们分割。例如 a=5;b=6;c=a*b,d=c+2 这时可得与上面相同的结果。,16,MATLAB工作空间中的变量在退出MATLAB时会丢失,如果在退出MATLAB前想将工作空间中的变量保存到文件中,则可以调用save命令来完成,该命令的调用格式为 save 文件名 变量列表 其它选项注意 这一命令中不能使用逗号,不同的元素之间只能用空格来分隔。,17,例如,想把工作空间中的a,b,c变量存到mydat.mat文件中去,则可用下面的命令来

10、实现。 save mydat a b c这里将自动地使用文件扩展名mat。如果想将整个工作空间中所有的变量全部存入该文件,则应采用下面的命令。 save mydat,18,当然这里的mydat也可省略,这时将工作空间中的所有变量自动地存入到文件matlab.mat中了。应该指出的是,这样存储的文件均是按照二进制的形式进行的,所以得出的文件往往是不可读的,如果想按照ASCII码的格式来存储数据,则可以在命令后面加上一个控制参数-ascii,该选项将变量以单精度的ASCII码形式存入文件中去,如果想获得高精度的数据。则可使用控制参数:-ascii -double。,19,MATLAB提供的load

11、命令可以从文件中把变量调出并重新装入到MATLAB的工作空间中去,该函数的调用格式与save命令同。当然工作空间中变量的保存和调出也可利用菜单项中的File|Save Workspace As 和File|Open命令来完成。,20,如果想查看目前的工作空间中都有哪些变量名,则可以使用who命令来完成。例如当MATLAB的工作空间中有a , b , c ,d四个变量名时,使用who 命令将得出如下的结果。 who,your variable are:a b c d 想进一步了解这些变量的具体细节,则可以使用whos命令来查看。,21,了解了当前工作空间中的现有变量名之后,则可以使用clear命

12、令来删除其中一些不再使用的变量名,这样可使得整个工作空间更简洁,节省一部分内存,例如想删除工作空间中的a ,b两个变量,则可以使用下面的命令 clear a b如果想删除整个工作空间中所有的变量,则可以使用以下命令 clearMATLAB可以使用上下光标键来前后查看已经键入的命令。,22,但仅靠一条一条地输入语句,MATLAB难以实现复杂功能,为了实现诸如循环、条件、分支等功能,MATLAB利用了m文件,m文件是由一系列的MATLAB语句组成。,23,MATLAB实际上可以认为是一种解释性语言,用户可以在MATLAB工作环境下一条一条地键入命令,也可以直接键入用MATLAB的语言编写的m文件名

13、,或它们结合起来使用,这样MATLAB软件对此命令或m文件中各条命令进行翻译,然后在MATLAB环境下对它进行处理,最后返回运算结果。所以说MATLAB语言的结构可用下式进行描述MATLAB语言窗口命令m文件,24,1.2.2 MATLAB的磁盘文件,由于MATLAB本身可以被认为是一高效的语言,所以用它可编写出具有特殊意义的磁盘文件来,这些磁盘文件是由一系列的MATLAB语句组成,它既可能是一系列窗口命令语句,又可以是由各种控制语句和说明语句构成的函数文件。 由于它们都是由ASCII码构成的, 其扩展名均为“.m”,故统称为m文件。,25,1.文本文件文本文件是一系列的MATLAB语句组成,

14、它类似于DOS下的批处理文件,在MATLAB的提示符下直接键入文本文件名,便可自动执行文件中的一系列命令,直至给出最终结果。文本文件在工作空间中运算的变量为全局变量。,26,例1-1 求函数 在x= -4时的值。,解 首先建立以下文本文件,myfile.m,%this is an examplex1=abs(x)x2=sqrt(x1)+x3y=x2 当以上文本文件myfile.m建立后,在MATLAB 命令窗口中输入命令 x=-4;myfile,27,x1=4 x2=-62 y=-62这里执行的中间变量x1,x2都被保存下来,这与下面的函数文件是不同的。,28,2.函数文件函数文件的功能是建立

15、一个函数,且这个函数可以同MATLAB的库函数一样使用,它与文本文件不同,在一般情况下不能单独键入函数文件的文件名来运行一个函数文件,它必须由其它语句来调用,函数文件允许有多个输入参数和多个输出参数值,其基本格式如下 function f1,f2,f3,=fun(x, y, z,)注释说明语句函数体语句 其中 x, y, z,是形式输入参数;而f1,f2,f3,是返回的形式输出参数值;fun是函数名。,29,实际上,函数名一般就是这个函数文件的磁盘文件名,注释语句段的内容同样可用help命令显示出来。调用一个函数文件只需直接使用与这个函数一致的格式 y1,y2,y3,=fun(i,j,k,)

16、其中 i,j,k,是相应的实际输入参数,而y1,y2,y3,是相应的实际输出参数值。,30,例1-2 求函数 在x1= -2, x2= 3, x3= 1时的值,例 首先建立函数文件 myfunc.m function y1,y2=myfunc(x1,x2,x3) z1=3*x1.2;z2=(x2+x3) y1=z1+z2; y2=z1-z2;,31,当以上函数文件myfunc.m建立后,在MATLAB命令窗口中输入以下命令 a1=-2;a2=3;a3=1; b1,b2=myfunc(a1,a2,a3) 则显示结果为,b1= 16 b2=8,32,函数文件中定义的变量为局部变量,也就是说它只在函

17、数内有效。即在该函数返回后,这些变量会自动在MATLAB工作空间中清除掉,这与文本文件是不同的,但可通过命令 global 变量 来定义一个全局变量。函数文件与文本文件另一个区别在于其第一行是由function开头的,且有函数名和输入形式参数与输出形式参数,若是没有这一行的磁盘文件就是文本文件 。,33,由于m文件具有普通的文本格式,因而可以用任何编辑程序建立和编辑,但一般最常用、而且最为方便地是使用MATLAB命令窗口的File|New或File|Open菜单项对m文件进行建立和编辑。,34,1.2.3 MATLAB的库函数MATLAB提供了丰富的库函数,库函数是根据系统编制好了的,提供用户

18、直接使用的函数,MATLAB中常用的基本数学函数,如表1-3所示。除了基本函数外,不同版本的MATLAB还增加了不同的有专门功能的库函数,也称工具箱。例如通讯工具箱、控制系统工具箱和信号处理工具箱等等。对于各种函数的功能和调用方法可使用MATLAB的联机帮肋help来查询,其使用格式为 help 函数名,35,表1-3 MATLAB的基本函数,36,1.2.4 外部程序的调用,MATLAB允许在其命令窗口中调用可执行文件(.exe),其调用方法是在MATLAB提示符下键入惊叹号!后面直接跟该可执行文件即可。MATLAB也允许采用这样的方式来直接使用DOS命令,如磁盘复制命令copy可以由!co

19、py来直接使用,而文件列表命令dir可以由!dir来调用。事实上,为了使用户提供更大的方便,MATLAB已经把一些常用的DOS命令做成了相应的MATLAB命令,表1-4列出了MATLAB中提供的一些文件管理命令。,37,表1-4 文件管理命令,38,1.2.5 输入与输出函数,如果用户想在计算的过程中给计算机输入一个参数,则可以使用input( )函数来进行,该函数的调用格式为变量名input(提示信息,选项) 这里提示信息可以为一个字符串显示,它用来提示用户输入什么样的数据,input( )函数的返回值赋给等式左边的变量名。,39,例如, 用户想输入A矩阵,则可以采用下面的命令来完成 A=i

20、nput(Enter matrix A=); 执行该命令时首先给出Enter matrixA=提示信息,然后等待用户从键盘按MATLAB格式输入矩阵,并把此值赋给A。,40,如果在input( )函数调用时采用了s选项,则允许用户输入一个字符串,此时需用单引号将所输字符串括住。 eval( )是与字符变量一起工作的函数,执行字符串的宏调用。也就是eval( )使字符变量中的字符串做为对应的MATLAB语句来执行。例如s=dir c: ;eval(s) 其执行结果为显示出C盘根目录下的内容。它与在命令窗口中直接使用dir c: 的功能的一样的。,41,MATLAB 提供的命令窗口输出函数主要有d

21、isp( )函数,其调用格式为disp(变量名) 其中变量名既可以为字符串,也可以为变量矩阵。例如 s= Hello World,s=Hello World,disp(s),Hello World,42,MATLAB提供了较实用的字符串处理及转换的函数,例如int2str( )函数就可以方便在将一个整形数据转换成字符串形式,该函数的调用格式为 cstr=int2str(n) 其中 n为一个整数,而该函数将返回一个相关的字符串cstr。 例如 num的数值为num=15,而在输出中还想给出其它说明性附加信息,则可利用下面的语句 disp (The value of num is ,int2str

22、(num), !ok),这样可得The value of num is 15 !ok,43,与int2str( ) 函数的功能及调用方式相似,MATLAB还提供了num2str( )函数,可以将给出的实型数据转换成字符串的表达式,最终也可以将该字符串输出出来。例如给绘制的图形赋以数字的标题时可采用下面的命令 c=(70-32)/1.8; title(Room temperature is ,num2str(c), degrees C),则会在当前图形上加上题头标注Room temperature is 21.1111 degrees C,44,1.2.6 数值显示格式,MATLAB可以使用fo

23、rmat命令来改变显示格式,其调用格式为 format 控制参数 其中 控制参数决定显示格式,控制参数如表1-5表示。,45,表1-5 format命令的控制参数,46,1.2.7使用帮助 1、help命令,在命令窗口中显示 MATLBA的所有函数都是以逻辑群组方式进行组织的,而MATLAB的目录结构就是以这些群组方式来编排的。 help matfun :矩阵函数数值线性代数 help general:通用命令 help graphics:通用图形函数 help elfun:基本的数学函数 help elmat:基本矩阵和矩阵操作 help datafun:数据分析和傅立叶变换函数 help

24、ops:操作符和特殊字符,47,help polyfun:多项式和内插函数 help lang:语言结构和调试 help strfun:字符串函数 help control:控制系统工具箱函数 2、helpwin:帮助窗口 3、helpdesk:帮助桌面,浏览器模式 4、lookfor命令:返回包含指定关键词的那些项 5、demo:打开示例窗口,48,1.3 MATLAB的矩阵运算,MATLAB的基本数据单元是不需要指定维数的复数矩阵,它提供了各种矩阵的运算与操作,因它既可以对矩阵整体地进行处理,也可以对矩阵的某个或某些元素进行单独地处理,所以在MATLAB环境下矩阵的操作同数的操作一样简单。

25、因向量可作为矩阵的一列或一行,标量(一个数)有时则作为只含一个元素的矩阵,故向量和标量都可以作为特殊矩阵来处理。,49,1.3.1 矩阵的实现,在MATLAB语言中不必描述矩阵的维数和类型,它们是由输入的格式和内容来确定的,例如当A1 2时,把A当作一个2维向量;A5时,把A当作一个标量;A12i时,把A当作一个复数。 矩阵可以用以下几种方式进行赋值 * 直接列出元素的形式; * 通过语句和函数产生; * 建立在文件中; * 从外部的数据文件中装入。,50,1.简单矩阵的输入对于比较小的简单矩阵可以使用直接排列的形式输入,把矩阵的元素直接排列到方括号中,每行内的元素间用空格或逗号分开,行与行的

26、内容用分号隔开。在MATLAB下的输入方式为 A=1, 2, 3; 4, 5, 6; 7, 8, 9 或 A=1 2 3; 4 5 6; 7 8 9 都将得相同的结果,51,对于比较大的矩阵,可以用回车键代替分号,对每一行的内容分行输入,也可利用续行符号(),把一行的内容分两行来输入。如前面的矩阵还可以等价地由下面两种方式来输入。 A= 1 2 3 ; 4 5 6 7 8 9 或 A=1 2 3 ;4 5 6; 7 8 9输入后A矩阵将一直保存在工作空间中,除非被替代和清除,在MATLAB的命令窗口中可随时查看其内容。,52,利用size( )函数可测取一个矩阵的维数,该函数的调用格式为 n,

27、 m=size(A) 其中 A为要测试的矩阵名,而返回的两个参数n和m分别为A矩阵的行数和列数。 当要测试的变量是一个向量时,当然仍可由size( )函数来得出其大小,更简洁地,用户可以使用length( )函数来求出,该函数的调用格式为 n=length(x) 其中 x为要测试的向量名,而返回的n为向量x的元素个数。,53,如果对一个矩阵A用length(A)函数测试,则返回该矩阵行列的最大值,即该函数等效于max(size(A)。,54,2矩阵的元素MATLAB的矩阵元素可用任何表达式来描述,它既可以是实数,也可以是复数,例如 B= -1/3 1.3; sqrt(3) (1+2+3)*i,

28、B-0.3333 1.30001.7321 0+6.0000iMATLAB允许把矩阵作为元素来建立新的矩阵,例如,利用A矩阵通过下面的语句 C= A;10,11,12,55,MATLAB还允许对一个矩阵的单个元素进行赋值和操作,例如如果想将A矩阵的第2行第3列的元素赋为100,则可通过下面的语句来完成 A(2,3)=100,A= 1 2 3 4 5 100 7 8 9这时将只改变此元素的值,而不影响其它元素的值。,56,如果给出的行数或列数大于原来矩阵的范围,则MATLAB将自动扩展原来的矩阵,并将扩展后未赋值的矩阵元素置为0。例如如果想把矩阵A的第4 行第5列元素的值定义为8,就可以通过下面

29、语句来完成。 A(4,5)=8,A=1 2 3 0 04 5 100 0 07 8 9 0 00 0 0 0 8,57,矩阵的元素也可利用下例语句来产生 S1:S2:S3 其中 S1为起始值,S3为终止值,S2为步矩。使用这样的命令就可以产生一个由S1开始,以步距S2自增,并终止于S3的行向量,如 y=0:pi/4:pi,y=0.7854 1.5708 2.3562 3.1416 如果S2省略,则可以认为自增步距为1,例如 x=1:5,58,(2)a=linspace(n1,n2,n) 在线性空间上,行矢量的值从n1到n2,数据个数为n,缺省n为100。 a=linspace(1,10,10)

30、 a=1 2 3 4 5 6 7 8 9 10,59,(3)a=logspace(n1,n2,n) 在对数空间上,行矢量的值从10n1到10n2,数据个数为n,缺省n为50。这个指令为建立对数频域轴坐标提供了方便。 a=logspace(1,3,3) a=10 100 1000,60,另外,MATLAB还允许对子矩阵进行定义和处理,例如: A(1:3,1:2:5) %表示取A矩阵的第一行到第三行内,且位于1,3,5列上的所有元素子矩阵; A(2:3,:)%表示取A矩阵的第2行和第3行的所有元素构成的子矩阵; B(:,3,5,10)=A(:,1:3)%表示将A矩阵的前3列,赋值给B矩阵的3,5,

31、10列 特别是当A(:)在赋值语句的右边时,表示将A的所有元素按列在一个长的列向量中展成串。,61,3特殊矩阵的实现在MATLAB中特殊矩阵可以利用函数来建立。1)单位矩阵函数eye( ) 基本格式 Aeye(n) 产生一个n阶的单位矩阵A 或 Aeye(size(B) 产生与B矩阵同阶的单位矩阵A,62,2)零矩阵函数zeros( ) 3) 1矩阵函数ones( ) 4) 随机元素矩阵函数rand( ) 5)对角矩阵函数diag( ) 6) 伴随矩阵函数compan( ) 7) 上三角矩阵函数triu( )和下三角矩 阵函数tril( ),63,1.3.2 矩阵的运算,矩阵运算是MATLAB

32、的基础,MATLAB的矩阵运算功能十分强大,并且运算的形式和一般的数学表示十分相似。,1.转置:对于实矩阵用()符号或(.)求转置结果是一样的;然而对于含复数的矩阵,则()将同时对复数进行共轭处理,而 (.)则只是将其排列形式进行转置。,64,a=1 2 3;4 5 6 a =1 42 53 6,a=1 2 3;4 5 6. a =1 42 53 6,b=1+2i 2-7i b =1.0000 - 2.0000i2.0000 + 7.0000i b=1+2i 2-7i. b =1.0000 + 2.0000i2.0000 - 7.0000i,65,2矩阵的加和减,矩阵的加减法的运算符为“”和“

33、”。矩阵只有同阶方可进行加减运算,标量可以和矩阵进行加减运算但应对矩阵的每个元素施加运算。例如 A=1 2 3;4 5 6; B=A+1,B=2 3 45 6 7,66,3矩阵的乘法,矩阵的乘法运算符为“*”。当两个矩阵中前一矩阵的列数和后一矩阵的行数相同时,可以进行乘法进行运算,这与数学上的形式是一致的。例 CA*B;在MATLAB中还可进行矩阵和标量相乘,其结果为标量与矩阵中的每个元素分别相乘。,67,4.矩阵的除法,矩阵的除法有两种运算符“”和“/”,分别表示左除和右除。一般地讲,x= AB是A*x=B的解,x=B/A是x*A=B的解,通常ABB/A, 而AB=inv(A)*B, B/A

34、= B*inv(A)。,68,5.矩阵的乘方,矩阵的乘方运算符为“”。一个方阵的乘方运算可以用AP来表示 。P为正整数,则A的P次幂即为A矩阵自乘P次。如果P为负整数,则可以将A自乘 P次,然后对结果进行求逆运算,就可得出该乘方结果。如果P是一个分数,例如Pmn,其中n和m均为整数,则首先应该将A矩阵自乘n次,然后对结果再开m次方。,69,6.矩阵的翻转,MATLAB还提供了一些矩阵翻转处理的特殊命令,对nm维矩阵A 如 B=fliplr(A) %命令将矩阵A进行左右翻转再赋给B,即bijai,m+1-j,C=flipud(A) %命令将矩阵A进行上下翻转再赋给C,即cijan+1-i,j,D

35、=rot90(A) %命令将矩阵A进行旋转90度后赋给D,即dijaj,m+1-I。,70,7. 矩阵的超越函数,MATLAB中exp( ),sqrt( ),sin( ),cos( )等基本函数命令可以直接使用在矩阵上,这种运算只定义在矩阵的单个元素上,即分别对矩阵的每个元素进行运算。超越数学函数,可以在函数后加上m而成为矩阵的超越函数,例如expm(A),sqrtm(A),logm(A)分别为矩阵指数、矩阵开方和矩阵对数。矩阵的超越函数要求运算的矩阵必须为方阵。,71,8.关系运算,MATLAB常用的关系操作符有 小于 大于 等于小于等于 大于等于 不等于MATLAB的关系操作符可以用来比较

36、两个大小相同的矩阵,或者比较一个矩阵和一个标量。比较两个元素大小时,结果是1表明真,结果是0表明为假。关系运算函数如表1-6所示。表1-6 关系运算符,72,函数find( )在关系运算中很有用,它可以在矩阵中找出一些满足一定关系的数据元素。例如 A=1:9; B=A4,B=0 0 0 0 1 1 1 1 1,C=A(A4)C=5 6 7 8 9,或C=find(A4),C=5 6 7 8 9,73,9.逻辑运算,MATLAB的逻辑操作符有 (与)、|(或)和(非)。它们通常用于元素或01矩阵的逻辑运算。与和或运算符可比较两个标量或两个同阶矩阵,对于矩阵,逻辑运算符是作用于矩阵中的元素。逻辑运

37、算结果信息也用“0”和“1”表示,逻辑操作符认定任何非零元素都表示为真。给出1为真,0为假。,74,非是一元操作符,当A非零时,A返回的信息为0,当A为零时, A返回信息为1。因而就有:P|( P)返回值为1,P( P)返回值为0。例 A=1:9;C=(A4),C= 1 1 1 1 0 0 0 0 0,C=(A4)&(A7),C=0 0 0 0 1 1 0 0 0,75,10关系和逻辑运算函数,除了上面介绍的关系和逻辑运算符外,MATLAB中还提供了一些关系和逻辑运算函数如表1-7所示。表1-7 关系和逻辑操作符,76,1.4 MATLAB的向量运算,虽然在MATLAB中向量和矩阵在形式上有很

38、多的一致性,但它们实际上遵循着不同的运算规则。MATLAB向量运算符由矩阵运算符前面加一点“.”来表示,如“.*”、“./”和“.”等。,77,1.4.1 向量的加减向量的加、减运算与矩阵的运算相同,所以“”和“”既可被向量接收又可被矩阵接收。,78,1.4.2 向量的乘法向量乘法的操作符为“.*”。如果x,y两向量具有相同的维数,则x.*y表示x和y单个对应元素之间的对应相乘。例如 x=1 2 3; y=4 5 6; z=x.*y,z=4 10 18可见向量的输入和输出与矩阵具有相同的格式,但它们的运算规则不同,例如,如果x是一个向量,则求取函数x平方时不能直接写成x*x,而必须写成x.*

39、x,否则将给出错误信息。,79,但是对于矩阵可以使用向量运算符号,这时实际上就相当于把矩阵看成了向量进行运算。例如对于两个维数相同的A,B矩阵,CA.*B表示A和B矩阵的相应元素之间直接进行乘法运算,然后将结果赋给C矩阵,把这种运算称为矩阵的点积运算,两个矩阵之间的点积是它们对应元素的直接运算,它与矩阵的乘法是不同的。例如 A=1 2 3;4 5 6;7 8 9; B=2 3 4;5 6 7;8 9 0; C=A.*B 结果显示 C=2 6 1220 30 4256 72 0,80,1.4.3 向量的除法向量除法的操作符为“./”或“.”。它们的运算结果一样。 例如对前面给出的x和y向量 z=

40、y./ x,z=4.0000 2.5000 2.0000对于向量x.y和y./x一样,将得到相同的结果,这与矩阵的左、右除是不一样的,因向量的运算是它们对应元素间的运算。对于矩阵也可使用向量的除法操作符,这时就相当于把矩阵看成向量进行运算。,81,1.4.4 向量的乘方向量乘方的运算符为“.”。向量的乘方是对应元素的乘方,在这种底与指数均为向量的情况下,要求它们的维数必须相同。例如 x=1 2 3; y=4 5 6; z= x.y,z=1 32 729它相当于 z=1 2 34 5 6=14 25 36,82,1.5 MATLAB的控制语句,MATLAB是一个功能极强的高度集成化程序设计语言,

41、它具备一般程序设计语言的基本语句结构,并且它的功能更强,由它编写出来的程序结构简单,可读性强。和其它高级语言一样,MATLAB也提供了条件转移语句、循环语句等一些常用的控制语句,从而使得MATLAB语言的编程显得十分灵活。,83,1.5.1 循环语句,MATLAB中可以使用两种循环语句:for语句和while语句。 1.for语句的基本格式为 for 循环变量表达式1:表达式3:表达式2循环语句组end,84,例 MABLAB程序 mysum=0; for i=1:100mysum=mysum+i; end 运行结果 mysum=5050,85,2while语句的基本结构为while (条件式

42、)循环体条件组end其执行方式为,若条件式中的条件成立,则执行循环体的内容,执行后再判断表达式是否仍然成立,如果表达式不成立,则跳出循环,向下继续执行。,86,例如对于上面的例子,如果改用while循环语句,则可以写出下面的程序sum=0;i=1;while (i=100)sum=sum+i;i=i+1;endMATLAB提供的循环语句for和while是允许多级嵌套的,而且它们之间也允许相互嵌套,这和C语言等高级程序设计语言是一致的。,87,1.5.2 条件转移语句,MATLAB提供的条件语句是由if引导的,其格式为if (条件式)条件块语句组end当给出的条件式成立时,则执行该条件块结构中

43、的语句内容,执行完之后继续向下执行,若条件不成立,则跳出条件块而直接向下执行。,88,例1-4 求满足 的最小m值.,例 MABLAB程序 mysum=0; for m=1:1000if(mysum1000)break;endmysum=mysum+m; end m,运行结果m=46,89,注意, 这里使用了break命令,其作用就是中止上一级的for 语句循环过程,同样while循环语句也在条件转移语句中起着相当重要的作用,因为在MATLAB下没有提供绝对转移的指令。,90,例1-5 如果想对一个变量x自动赋值。当从键盘输入y或Y时(表示是),x自动赋为1值;当从键盘输入n 或N时(表示否)

44、,x自动赋为0值;输入其他字符时终止程序。,例 MABLAB程序 ikey=0; while(ikey=0)s1=input(若给X赋值请输入y/n?,s);if(s1=y|s1=Y)ikey=1;x=1,else if(s1=n|s1=N)ikey=1;x=0endbreak end end,91,MATLAB还提供了其它两种条件结构,if-else 格式和if-else if 格式,这两种格式的调用方法分别为if (条件式)条件块语句组1else条件块语句组2end,92,和 if (条件式1)条件块语句组1else if 条件式2条件块语句组2end,93,1.5.3 echo,paus

45、e语句,一般来说当一个m文件运行时,文件中的命令不在屏幕上显示出来,而利用echo命令可以使m文件在运行时把其中的命令显示在工作空间中,这对于调试、演示等很有用。例pause( )命令使用户暂停运行程序,当再按任一键时恢复执行。其中pause(n)中的n为等待的秒数。,94,.6 MATLAB的绘图功能,1.6.1 二维图形 1基本形式 MATLAB最基本的绘图函数为plot( )。如果y是一个n 维向量,那么plot(y)绘制一个y元素和y元素排列序号1,2,, n之间关系的线性坐标图。例如 y=0 0.48 0.84 1 0.91 0.6 0.14; plot(y) 则显示如图1-2所示曲

46、线。,95,如果x和y是两个等长向量,那么 plot(x,y) 将绘制一条x和y的之间关系的线性坐标图。例如 x=0:0.1:2*pi; y=sin(x);plot(x,y) 则显示如图1-3所示曲线。,图1-2 图1-3,96,2多重线型(补充hold on),在同一图形中可以绘制多重线型,基本命令格式为 plot(x1,y1,x2,y2,xn,yn)以上命令可将x1对y1,x2对y2,xn对yn的图形绘制在一个图形中,而且分别采用不同的颜色或线型。例如以下命令可显示如图1-4所示曲线。 x=0:0.1:2*pi;plot(x,sin(x),x,cos(x),97,图1-4,98,3.图形修

47、饰及文本标注,MATLAB中对于同一图形中的多重线,不仅可分别定义其线型,而且可分别选择其颜色,带有选项的曲线绘制命令的调用格式为plot(x1, y1,选项,x2, y2,选项2, xn, yn,选项n) 其中 x1,x2,xn为x轴变量,y1, y2, yn为y轴变量,选项如下表1-8所示。,99,表1-8 MATLAB的绘图命令的各种选项,100,上表中的线型和颜色选项可以同时使用,例如 x=0:0.1:2*pi; plot(x,sin(x),-g, x,cos(x),-.r),101,绘制完曲线后,MATLAB还允许用户使用它提供的特殊绘图函数来对屏幕上已有的图形加注释、题头或坐标网格

48、。例如 x=0:0.1:2*pi;y=sin(x);plot(x, y) title(Figure Example) 给出题头 xlabel(This is x axis) x轴的标注 ylabel(This is y axis) y轴的标注 grid 增加网格 legend(sin(x) 加图例,102,除了在标准位置书写标题和轴标志以外,MATLAB还允许在图形窗口的位置利用line( ) 和text( )命令画直线或写字符串,它们的调用格式分别为line(x, y)及text(x, y,chstr,选项) 其中 line( )函数在给定的图形窗口上绘制一条由向量x 和y定义的折线,text( )函数是在指定的点(x,y)处写一个chstr绘出的字符串,而选项决定x,y坐标的单位,如选项为sc,则x,y表示规范化的窗口相对坐标,其范围为0到1,即左下角坐标为(0,0),而右上角的坐标为 (1,1)。,103,用text( )命令可以在图形中的任意位置加上文本说明,但是必须知道其位置坐标,而利用另一个函数gtext( ),则可以用鼠标来对要添加的文本字符串定位。在MATLAB的工作空间中键入下列命令 gtext(sin(x)那么在图中,将会出现一个十字叉 ,用鼠标拖动它到添加文本的位置,单击鼠标,gtext( )命令中的文本字符串sin(x)就自动添加到指定的位置。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报