MATLABch04MATLAB程序设计基础知识20080621电子教案_第1页
MATLABch04MATLAB程序设计基础知识20080621电子教案_第2页
MATLABch04MATLAB程序设计基础知识20080621电子教案_第3页
MATLABch04MATLAB程序设计基础知识20080621电子教案_第4页
MATLABch04MATLAB程序设计基础知识20080621电子教案_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Good is good, but better carries it.精益求精,善益求善。MATLABch04MATLAB程序设计基础知识20080621-Matlab-ch04(MATLAB程序设计-基础知识)第4讲MATLAB程序设计-基础知识内容提要:本章主要介绍MATLAB程序设计的有关基础知识。重点及难点:MATLAB作为一种高级应用软件,除了命令行操作的直接交互方式以外,还有自己的编程语言。为了充分发挥和体现MATLAB的功能,必须掌握MATLAB的程序设计。本讲详细介绍MATLAB程序设计的基本知识,通过本章的学习,可以掌握关于MATLAB程序设计的方法,增强设计应用程序的能力

2、。MATLAB不仅是一个功能强大的工具软件,更是一种高效的编程语言。MATLAB的编程效率比常用的BASIC、C、FORTRAN和PASCAL等语言要高得多,而且容易维护。MATLAB软件即MATLAB语言的编程环境,M文件也就是用MATLAB语言编写的程序代码文件。4.1MATLAB的变量和表达式一、MATLAB的变量及其类型1、变量命名规则在MATLAB中,对变量(包括函数)命名时应遵循以下规则:(1)变量名(包括函数名)对字母的大小写敏感,即MATLAB区分字母的大小写;(2)变量名的第一个字符必须为英文字母,而且不能超过31个字符;(3)变量名由英文字母、数字和下划线组成,即变量名可以

3、包含下连字符、数字,但不能为空格符(Backspace)和标点。例如,my_var_30就是合法的变量名。2、局部变量和全局变量(1)局部变量只在每个函数体内定义、使用,而不能从其他函数和MATLAB工作空间访问的变量称为局部变量。(2)全局变量在多个函数及MATLAB函数中都能使用的变量称为全局变量。通常每个函数体内都有自己定义的变量,不能从其他函数和MATLAB工作空间访问这些变量,这就是局部变量。如果要使某个变量在几个函数及MATLAB函数中都能使用,它就是全局变量。(3)局部变量和全局变量的区别全局变量名应尽可能大写,并用“global声明。如果要在几个函数和MATLAB的工作空间中都

4、能访问一个全局变量,则需在每个函数和MATLAB工作空间中都声明该变量是全局变量。全局变量要在函数体的变量赋值语句之前说明,整个函数以及所有对函数的递归调用都可以利用全局变量。【注意】:在实际编程中,应尽量避免使用全局变量,因为全局变量的值一旦改动,则在其他包括该变量的函数中都将改变,这样有可能会出现不可预见的情况。3、永久变量/预定义变量PredefinedVariable定义变量时,有些MATLAB的保留字符不能用,其中有一部分就是MATLAB的永久变量,也称为预定义变量(PredefinedVariable)。每当MATLAB启动时,系统自动定义变量,驻留于内存中。它们不会被命令clea

5、r清除(永久变量的名称就源于此)。系统也可以为这些永久变量赋值,但所赋的值可以用clear命令清除,从而恢复系统预定义的值(预定义变量的名字就反映这个意思)。常见的永久变量见表4-1。表4-1MATLAB的永久变量变量名含义ans预设的计算结果的变量名(计算结果的缺省变量名)EpsMATLAB定义的正的极小值=2.2204e-16pi内建的值(圆周率)Inf或inf值,无限大,定义为SKIPIF10NaN或nan无法定义一个数目,非数(NotaNumber),如0/0i或j虚数单位SKIPIF1y=1/0无穷大的使用Warning:Dividebyzero.Y=Inf1/y无穷大的作用和ans

6、变量的使用ans=0【说明】:(1)在MATLAB中,象1/0这样的操作不会引起程序执行中断,只是在给出警告信息的同时,用一个永久变量inf来表示,而且这个变量和其他变量一样,可在各种运算中发挥巨大的作用。(2)对于inf同样可以当作一个变量来使用,此特点在编程中有很大作用。二、MATLAB基本表达式MATLAB采用的是表达式语言,用户输入的语句由MATLAB系统解释运行。用户可以在MATLAB的命令窗口中键入命令,也可以在编辑器内编写应用程序,MATLAB软件对此命令或程序中各条语句进行翻译,然后在MATLAB环境下对它进行处理,最后返回运算结果。1、语句格式MATLAB语句由表达式和变量组

7、成,有两种表示形式:表达式变量=表达式2、表达式书写规则MATLAB书写表达式的规则与“手写算式”差不多相同,具体遵循以下规定:(1)表达式由变量名、运算符、数字和函数名组成;(2)表达式将按常规的优先级从左至右执行运算;(3)优先级的规定是:指数运算级别最高,乘除运算次之,加减运算级别最低;(4)括号可以改变运算顺序;(5)书写表达式时,赋值符“=”和运算符两侧允许有空格,以增加可读性。但在复数或符号表达式中要尽量避免,以防出错;(6)表达式的末尾可加上“;”,也可以不加。有“;”时,MATLAB系统不显示计算结果,而是直接把数值赋给变量,如果没有用变量就无法看到结果;没有“;”时,MATL

8、AB系统将会在该条语句的下面直接显示运算结果。3、说明(1)在MATLAB语句的第一种形式中,表达式运算后产生的结果如果是矩阵或其他数值类型,MATLAB系统将会自动赋给变量名为ans,并显示在屏幕上。ans是一个默认的永久变量,它会在以后类似的操作中被自动覆盖掉,所以重要的结果一定要记录下来,也就是使用第二种形式。(2)在MATLAB语句的第二种形式中,“=”右边的表达式计算后产生的结果,MATLAB系统会自动赋给“=”左边的变量,然后存入内存中,并显示在屏幕上。(3)MATLAB语言与C语言不同,它允许一次返回多个结果,这时“=”左边是用“”括起来的变量列表,例如命令函数:X,Y,Z=pe

9、aks;它返回了坐标列向量X,Y,Z的值。例4-2example4_2.m创建一个表达式。x=(3*42+exp(sin(45)/6x=8.3903(4)如果一个表达式过长,也可以在结尾加上.(代表此行指令与下一行连续),例如3*82-8*9.6ans=1204.2MATLAB数组及其类型一、MATLAB的数据结构MATLAB是一种面向数组(Array)的编程语言,其数据类型的最大特点是每一种类型都以数组为基础,从数组中派生出来的,事实上,MATLAB把每种类型的数据都作为数组来处理。1、数据结构的类型图4-1在MATLAB中,有6种基本的数据类型,即:char(字符)、double(双精度数

10、值)、sparse(稀疏数据)、storage(存储型)、cell(单元数组)和Struct(结构)。数据类型间的关系如图4-1所示。2、有关说明(1)存储型是一个虚拟数据类型,它包括int8(8位整型)、uint8(无符号8位整型)、intl6(16位整型)、uintl6(无符号16位控型)、iht32(32位整型)和uint32(无符号32位整型)。(2)最常用的数据类型只有双精度型和字符型,所有MATLAB计算都把数据当作双精度型处理。(3)无符号8位整型一般用于储存图像数据。(4)稀疏数据一般用于处理稀疏矩阵。(5)单元数组和结构数组一般用在大型程序中。(6)储型数组一般只用于内存的有

11、效储存,可对这些类型的数组进行操作,但不能进行任何数学运算,否则必须用double函数把它转换为双精度类型。3、数组之间的差别MATLAB的数组有:字符串数组(CharacterStringArray)、单元数组(CellArray)、结构数组(StructureArray)和数值数组(NumericArmy),它们之间的基本差别如表4-2所示。二、字符串数组对于MATLAB编程来说,字符处理必不可少。对于字符串的使用应符合以下规定:(1)所有字符串都用单引号括起来;(2)字符串中的每个字符都是字符串变量(矩阵或向量)中的一个元素;(3)字符串中的字符以ASCII码形式储存并区分大小。用函数a

12、bs可以看到字符的ASCII码。MATLAB有强大的字符处理功能,其字符串处理函数如表4-3所示。表4-3字符串处理函数1、字符串数组的建立(1)直接赋值法建立字符串数组建立字符串可通过直接赋值,先把待建的字符放在单引号中,然后直接赋值给变量。如:a=Thisisabooka=Thisisabook(2)建立中文字符串数组创建中文字符串时,字符外边的单引号对必须在英文状态下输入。与英文字符一样,每个中文字符也占一个元素位置,但应注意此时的ASCII大于256。A=中国长城A=中国长城(3)建立带单引号的字符串当字符串中的字符包含有(英文)单引号时,每个单引号符用连续的两个单引号符表示。B=Ch

13、ina中国B=China中国(4)多行字符串的创建在直接创建多行字符串数组时,要保证同一字符串数组的各行字符数相等,即保证各行等长。如果不等长,则用空格符来调节其长度,使它们彼此相等。如:AB=中国;changchengAB=中国changcheng(5)利用字符串操作函数创建字符串数组在MATLAB中,有专用函数char、str2mat和strvcat创建多行字符串数组。这三个函数创建多行数组时,不必担心每行字符是否相等,它们总会按最长行设置第二维的长度,其他行的尾部用空格填充。它们的调用格式为:S=char(TI,T2,T3,)S=str2mat(T1,T2,T3,)S=strvcat(T

14、1,T2,T3,)其中:T1,T2,T3,是字符串,在输入时,T1,T2,T3,两边要加英文状态下的单引号。(6)利用转换函数建立字符串数组在MATLAB中,把数值数组转化为字符串数组的常用函数为int2str、num2str、mat2str、char和double。函数命令char可把ASCII码数组转化为字符串数组;命令double可把其他任何数组转化为数值数组。【说明】:中文字符能被命令char和double正确转化。2、字符串数组的操作(1)字符串的连接字符串可以连接到一起组成更大的字符串。可以直接在中括号内用逗号连接,也可以通过函数strcat连接。如:A=中国长城B=China中国

15、ab=A,B,第二个输入是表示输入空格字符串ab=中国长城China中国strcat(A,B)函数strcat连接,忽略原字符串结尾处的空格ans=中国长城China中国3、字符串数组元素的标识在一维字符串数组中,MATLAB按从左向右的顺序用自然数数码(1,2,3等)标识字符位置,其操作也用标识来进行。三、单元数组CellArray单元数组(CellArray)是一种比较特殊的MATLAB数组,该数组的基本成分是单元,它的每个元素都是一个单元,单元中包含其他MATLAB数组。每个单元本身在数组中是平等的,它们只能以下标区分。单元内可以存放任何类型、任何大小的数组,而且同一单元数组内各单元的内

16、容可以不同。同数值数组一样,单元数组的维数不受限制,可以是一维、二维或更高维。单元数组对单元的编址方法有单下标编址和全下标编址。对于单元数组来说,单元和单元里的内容是两个不同的范畴。因此,寻访单元和寻访单元内容是两种不同的操作。以二维单元数组为例,A(2,3)是指A单元数组中的第二行第三列单元元素;而A2,3是指A单元数组中的第二行第三列单元中所允许存或取的内容。两者的区别仅是用圆括号或是用花括号。1、单元数组的建立在MATLAB中,有三种方法来建立单元数组。(1)利用赋值语句建立单元数组赋值语句建立单元数组又有两种不同的方式:用小括号括起单元的下标,在赋值语句的右侧用花括号括起单元的内容。如

17、:A(1,1)=Mtalab;单元(1,1),字符串A(1,2)=6.0;单元(1,2),标量,记录版本号A(2,1)=矩阵;单元(2,1),中文字符串A(2,2)=234;23l4;548;单元(2,2),矩阵A列出矩阵AA=结果matlab6矩阵3x3double用花括号括起单元的下标,在赋值语句的右侧直接指定单元的内容。如上面命令可写成:A1,1=matlab;单元(1,1)中的内容A1,2=6.0;单元(1,2)中的内容A2,2=矩阵;单元(2,1)中的内容A2,2=234;2314;548;单元(2,2)中的内容(2)利用花括号(单元数组法)建立单元数组在花括号中直接赋值,单元与单元

18、之间用逗号、空格或分号隔开,使用如下语句也可得出与上面相同的单元数组。A=matlab,6.0;矩阵,234;2314;548或A=matlab6.0;矩阵234;2314;548【说明】:上式中6.0后面的分号表示数组另起一行,不能用别的符号代替。(3)利用cell函数建立单元数组cell函数用来预分配指定大小的单元数组,其调用格式为:c=cell(n)建立nn的单元数组,单元是空矩阵;C=cell(m,n)或cell(m,n)建立mn的单元数组,单元是空矩阵;c=cell(m,n,p,)或cell(m,n,p,.)建立mnp的单元数组,单元是空矩阵;c=cell(size(A)建立和A大小

19、相同的单元数组。2、单元数组的访问在MATLAB中,单元数组的访问有两种方式:(1)用内容下标(花括号)访问单元内容A1,1访问第(1,1)个单元中的内容ans=matlab(2)用单元下标(小括号)访问单元子集又如数组A:A(1,1)访问第(1,1)个单元ans=matlabb=A(1:2,1)把单元数组A中第一列的两个单元赋给b,b也成为单元数组b2=matlab矩阵3、单元数组的显示单元数组中的内容一般以压缩的形式显示。要形象地查看单元数组中的内容,MATLAB提供了函数cellplot命令,而函数celldisp命令只是显示单元数组全部或部分内容。(1)cellplot函数【调用格式】

20、:图4-2图形方式显示单元数组H=cellplot(C,legend);式中第二个输入参数用于现实色彩图例,该命令用大白方格表示单元,用小方格表示所存的数组元素,色彩表示数据属性。如数组A用图形方式显示为:cellplot(A,legend)结果如图4-2所示。(2)celldisp函数4、单元数组的操作在MATLAB中,可对单元数组进行一系列操作。如:(1)把单元(注意,不是单元内容)设置为空来删除该单元数组中的单元;(2)用函数reshape命令来改变单元数组的大小,但要注意改变形状时数组中的元素个数;(3)单元数组也可像一般数组那样用方括号进行连接;(4)单元数组可代替用逗号或空格分隔的

21、变量列表;(5)如果数组中的多个单元是用花括号和冒号一起引用的,MATLAB则把每个单元的内容看作一个独立的变量。四、结构数组StructureArrayMATLAB中的结构数组(StructureArray)与单元数组一样,能在一个数组存放各类数组。从一定意义上讲,结构数组组织数据的能力比单元数组更强、更富于变化。结构数组的基本成分是结构(Structure),数组中的每个结构相等,它们以下标区分。结构必须在划分“域”后才能使用。数据不能直接存放在结构上,而只能存放在域中。结构的域可以存放任何类型、任何大小的数组,而且不同结构的同名域中存放的内容可以不同。1、结构数组的建立(1)直接建立结构

22、数组直接建立结构和各个域,同时给各域赋值(也可以不赋值),结构和域之间用点连接。在访问结构数组的各个域时,也是“结构数组名.域名”的格式。当结构带有子域时,需完整地键入结构名、域名、子域名,才能显示域中的内容。结构数组的各个域可以按照其本身的数据类型进行相应的各种运算。例4-5example4_5.m建立一桥梁混凝土试件强度的结构数组。=XX大桥;域名为name,中文字符串,记录桥名bridge.position=顶板;域名为position,中文字符串,记录试件位置bridge.position.group=2组;子域名为group,字符串,记录组数bridge.pos

23、ition.value=28.429.430.1;26.829.028.8;子域名value,记录试件强度bridge得到结构数组的内容如下bridge=name:XX大桥position:1x1structbridge.position显示域position中的内容ans=group:2组value:2x3doublebridge.position.value显示域value中的内容ans=28.400029.400030.100026.800029.000028.8000(2)利用structure函数创建结构数组除了上面所讲述的直接建立结构数组外,MATLAB还有一个专门建立结构数组的函

24、数struct。该函数命令的调用格式为:struct(fieldl,valuesl,field2,values2,)%用指定的域名和各个域的数据建立结构数组。如果数组中包含多个结构,而且各个结构域中的数据不尽相同,则域的数据valuesl、values2、必须是单元数组。建立的结构数组和单元数组的大小相同。如:s=struct(type,big,little,color,red,x,3,4)建立结构数组s=1x2structarraywithfields:typecolorx2、结构数组的操作(1)结构数组域中内容的调取和设置在MATLAB中,对结构数组域中内容的调取和设置可通过函数getfi

25、eld和setfield进行。(2)删除结构的域在MATLAB中,利用函数rmfield可以删除结构的域。(3)结构数组和单元数组的转换在MATLAB中,利用函数struct2cell和cell2struct可以进行结构数组和单元数组之间的转换。3、数据的分配MATLAB中的函数deal可把输入数据分配给输出数据,其调用格式为:(1)A,B,C,=deal(X,Y,Z,)等价于A=X,B=Y,C=Z,(2)A,B,C,=deal(X)等价于A=X,B=X,C=X,例4-6example4-6.msys=rand(3)ones(3,1)eye(3)zeros(3,1);建立单元数组sysa,b,

26、c,d=deal(sys:);把sys中的每个“单元”分配给相对应的变量a=0.95010.48600.45650.23110.89130.01850.60680.76210.8214b=111c=100010001d=000【说明】:例4-5中的sys:和sys不同,sys是将整个单元数组分配给每个变量。4.3MATLAB的运算符和操作符在MATLAB中,一般的运算符和操作符构成运算最基本的操作指令,例如加、减、乘、除和乘方等运算,这些指令几乎在所有计算机语言中都有,并且大同小异。在MATLAB中,几乎所有的运算都是以矩阵为基本的运算单元,这与大多数计算机语言不同,也是MATLAB的显著特点

27、。一、运算符在MATLAB中,最常见的运算符如表4-4所示。【注】:在矩阵运算中,左除和右除有一定的区别。a=1:1:10;b=0:10:90;a+bans=11223344556677889100a-bans=1-8-17-26-35-44-53-62-71-80a.*b%注意这里a后加了个“.”ans=02060120200300420560720900a/bans=0.1158abans=0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000123456789b

28、./aans=Columns1through705.00006.66677.50008.00008.33338.5714Columns8through108.75008.88899.0000a.bans=Columns1through705.00006.66677.50008.00008.33338.5714Columns8through108.75008.88899.0000a.2ans=149162536496481100说明:在这里特别要注意一下有没有加点“.”之间的区别,这些算术运算符所运算的两个阵列是否需要长度一致。矩阵转置运算通过在矩阵变量后加的方法来表示转置运算a=1:1:10;

29、b=0:10:90;aans=12345678910c=a+b*i;cans=1.00002.0000-10.0000i3.0000-20.0000i4.0000-30.0000i5.0000-40.0000i6.0000-50.0000i7.0000-60.0000i8.0000-70.0000i9.0000-80.0000i10.0000-90.0000i二、操作符在MATLAB中,操作符在资料构造和运算中非常有用。各操作符的含义如表4-5所示。【说明】:(1)冒号“:”冒号在矩阵的构造和运算中极为实用,它可以用来产生向量;用作矩阵的下标;部分地选择矩阵元素;进行行循环操作等。(2)续号“

30、”如果一个命令很长,一行容不下,则可以在一行的末尾加三个或更多的点,表示此行未完,而在下一行继续。(3)分号“;”在方括号中,分号表示矩阵中行的结尾。如用在每行的结尾,则MATLAB不会显示该行运算的结果,此功能可以用在M文件中控制命令的显示,减少输出篇幅。4.4MATLAB的关系运算和逻辑运算除了传统的数学运算,MATLAB支持关系和逻辑运算。在程序流程控制中,常有一些逻辑和模糊逻辑推理,需要对其做出“是真、是假”的判断或回答,以便控制程序的流程,或执行次序。作为所有关系和逻辑表达式的输入,MATLAB把任何非零数值当作真,把零当作假。所有关系和逻辑表达式的输出,对于真,输出为1;对于假,输

31、出为零。在关系和逻辑运算中,MATLAB有以下规定:(1)在所有的关系表达式和逻辑表达式中,输入的任何非0数都被看作是“逻辑真”,而只有0才被认为是“逻辑假”;(2)所有关系表达式和逻辑表达式的计算结果是一个由0和1组成的“逻辑数组(LogicalArray)”,数组中的1表示“真”,0表示“假”;(3)逻辑数组是一种特殊的数值数组,与“数值类”有关的操作和函数对它也适用;但它又不同于普通的“数值”,它还表示对事物的判断结论“真”与“假”,有其自身的特殊用途。一、关系运算1、关系运算符MATLAB关系(运算)操作符用来比较两个同样大小的数组,或用来比较一个数组和一个标量。其关系操作符如表4-6

32、所示。表4-6关系运算符关系操作符功能说明关系操作符功能说明小于大于=大于或等于=等于=不等于注:=和=意味着两种不同的事:=比较两个变量,当它们相等时返回1,当它们不相等时返回0;在另一方面,=被用来将运算的结果赋给一个变量。2、关系运算规则(1)比较的两个变量是标量若标量a、b之间关系成立,则关系运算结果为l;若标量a、b之间关系不成立,则关系结果为0。(2)比较的两个变量是数组当两个维数相同的数组A和B比较时,数组A、B比较的是相同位置的元素,按标量的运算规则逐个进行。关系运算的结果是一个维数和A相同的数组,它的元素由0和1组成。(3)比较的两个变量一个是数组A,另一个是标量b把标量b和

33、数组A的每一个元素按标量关系运算规则逐个比较。关系运算的结果是一个维数和数组A相同的数组,它是由0和l组成。例如:例4-9example4_9.m关系运算示例A=1:9,B=9-AA=123456789B=876543210tf=A4%找出A中大于4的元素;0出现在A4的地方tf=000011111tf=(A=B)%找出A中的元素等于B中的元素tf=000000000tf=B-(A2)%找出A2,并从B中减去所求得的结果向量tf=87543210-1(4)算术运算、关系运算和逻辑运算的优先级由高到低为算术运算、关系运算和逻辑运算。例4-10example4_10.m关系运算示例。B=B+(B=

34、0)*epsB=Columns1through78.00007.00006.00005.00004.00003.00002.0000Columns8through91.00000.0000这是一个演示,表明如何用特殊的MATLAB数eps来代替在一个数组中的零元素,eps近似为2.2e-16。这种特殊的表达式在避免被0除时是很有用的。例4-12example4-12.mx=(-3:3)/3x=-1.0000-0.6667-0.333300.33330.66671.0000sin(x)./xWarning:Dividebyzeroans=0.84150.92760.9816NaN0.98160.

35、92760.8415由于第四个数据是0,计算函数sin(x)/x时给出了一个警告。由于sin(0)/0是没定义的,在该处MATLAB结果返回NaN。用eps替代0以后,再试一次,x=x+(x=0)*eps;sin(x)./xans=0.84150.92760.98161.00000.98160.92760.8415现在sin(x)/x在x=0处给出了正确的极限。例4-13example4-13.m关系运算示例。A=348;902;537输入矩阵AA=348902537B=441;784;517输入矩阵BB=441784517E=(A=B)比较矩阵A和B是否相等E=010000101NE=(A=

36、B)比较矩阵A和B是否不等NE=101111010A0=(A5)标出矩阵A中大于5的元素A0=001100001B0=(B=A=348;902;537输入矩阵AA=348902537B=441;784;517输入矩阵BB=441784517AB=A&B对矩阵A和B求逻辑“与”AB=111101111A_B=A|B对矩阵A和B求逻辑“或”A_B=111111111C=A对矩阵A求逻辑“非”C=000010000cc=(A3)&(AA=1:9;B=9-A;tf=A4%找出A大于的元素tf=000011111tf=(A4)%对上面的结果取非,也就是1替换0,0替换1tf=111100000tf=(A

37、2)&(Ax=linspace(0,10,100);%createdatay=sin(x);%computesinez=(y=0).*y;%setnegativevaluesofsin(x)tozeroz=z+0.5*(yz=(xplot(x,z)xlabel(x),ylabel(z=f(x),title(ADiscontinuousSignal)三、关系与逻辑函数除了上面的关系与逻辑操作符,MATLAB提供了大量的其他关系与逻辑函数,这些函数在交互运算及进行矩阵的标化中非常有用,可以很方便地查找或替换矩阵中满足一定条件的部分或所有元素,如表4-8所示。表4-8关系与逻辑函数函数名称功能xor

38、(A,B)异或运算。A或B非零(真)返回1,x和y都是零(假)或都是非零(真)返回0。any(A)如果在一个向量x中,任何元素是非零,返回1;矩阵x中的每一列有非零元素,返回1all(A)如果在一个向量x中,所有元素非零,返回1;矩阵x中的每一列所有元素非零,返回1isequel(A,B)ismember(A,B)1、any函数这是一个判断向量中元素是否有非0的函数。在矩阵处理时,有时要判断矩阵中的元素有无0值。如果在对矩阵进行数组除时,就要判断作除数的矩阵是否有0元素。其调用格式为:(1)any(A)若A是向量,如果A向量中至少有一个元素为非0数,any(A)将返回逻辑“真”,即为1,否则为

39、0;若A为矩阵,函数any(A)按向量的列判断,如果矩阵A的某列中存在某个元素为非0数,则返回当前列的结果为l;若A是多维矩阵,any(A)将第一个不是单维的维作为向量,按向量的运算规则进行判断;(2)any(A,dim)指定的第dim维作为向量进行计算。如any(A,1)就是按向量A第一维进行计算。例4-25example4_25.m函数any的用法。A=348;902;537输入矩阵AA=348902537any(A)逻辑运算ans=111any(A,2)对的二维进行逻辑运算ans=1113、all函数【格式】:(1)all(A)若A是向量,如果A向量中每个元素都是非0数,all(A)将返

40、回逻辑“真”,即为1,如果至少有一个元素为0,则返回值为0。若A为矩阵,函数a1l(A)按向量的列判断,如果矩阵A的某列中所有元素都为非0数,则返回当前列的结果为1。若A是多维矩阵,all(A)将第一个不是单维的维作为向量,按向量的运算规则进行判断;(2)all(A,dim)指定的第dim维作为向量进行计算。如all(A,1)就是按向量A第一维进行计算。例4-27example4_27.m判断矩阵A=348;902;537的所有元素是否都大于或等于1。A=348;902;537输入矩阵AA=348902537all(all(A=1)用函数all判断ans=0A=1看看矩阵A大于等于1的值ans=l11101111all(A=1)用一次函数all判断ans=101四、判断函数除了关系及逻辑函数外,MATLAB还提供了大量的判断函数,测试特殊值或条件的存在,返回逻辑值。这些命令在MATLA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论