《第二章数值运算PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第二章数值运算PPT讲稿.ppt(70页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二章数值运算第二章数值运算第1页,共70页,编辑于2022年,星期二Matlab程序设计程序设计第二章 数值运算第2页,共70页,编辑于2022年,星期二Matlab程序设计程序设计本章目标1 1、掌握矩阵、数组的创建和标识方法、掌握矩阵、数组的创建和标识方法2 2、掌握矩阵的算术、关系及逻辑运算、掌握矩阵的算术、关系及逻辑运算3 3、特殊矩阵、特殊矩阵4 4、字符串数组、字符串数组5 5、异质数组、异质数组6 6、结构数组、结构数组第3页,共70页,编辑于2022年,星期二Matlab程序设计程序设计第一节第一节 数组和矩阵的创建数组和矩阵的创建u数组数组:是指由一组实数或复数排成的长方阵
2、列。:是指由一组实数或复数排成的长方阵列。u数组运算数组运算:是指无论在数组上施加什么运算(:是指无论在数组上施加什么运算(+、-、或函或函数),总认为那种运算对被运算数组中的每个元素数),总认为那种运算对被运算数组中的每个元素(ElementElement)平等地实施同样的操作。)平等地实施同样的操作。u目的:目的:使计算程序简单、易读,使程序指令更接近于教科书上的数学使计算程序简单、易读,使程序指令更接近于教科书上的数学计算公式;计算公式;提高程序的向量化程度,提高计算效率,节省计算机开提高程序的向量化程度,提高计算效率,节省计算机开销。销。第4页,共70页,编辑于2022年,星期二Mat
3、lab程序设计程序设计n 一维数组的创建一维数组的创建(1 1)逐个元素输入法)逐个元素输入法 x=2 pi/2 sqrt(3)3+5ix=2 pi/2 sqrt(3)3+5i (2 2)冒号生成法)冒号生成法通过通过“步长步长”设定,生成一维设定,生成一维“行行”数组的方法。数组的方法。通用格式:通用格式:x=a:inc:bx=a:inc:b(3 3)采用)采用linspacelinspace和和logspacelogspace函数法函数法 x=linspace(a,b,n)x=linspace(a,b,n):该指令生成(:该指令生成(1 n1 n)数组,其作用与)数组,其作用与x=a:(b
4、-a)/(n-1):bx=a:(b-a)/(n-1):b同,同,n n默认值为默认值为100100。logspace(a,b,n)logspace(a,b,n):生成:生成1010a a到到1010b b之间按对数等分的之间按对数等分的n n个元个元素的行向量,素的行向量,n n默认值为默认值为5050。第5页,共70页,编辑于2022年,星期二Matlab程序设计程序设计n 二维数组的创建二维数组的创建u 直接输入法直接输入法对于较小数组,从键盘上直接输入最方便。对于较小数组,从键盘上直接输入最方便。二维数组必须有以下三个要素:二维数组必须有以下三个要素:整个输入数组必须以方括号整个输入数组
5、必须以方括号“”为其首尾;为其首尾;数组的行与行之间必须用分号数组的行与行之间必须用分号“;”或回车键隔离;或回车键隔离;数组元素必须由逗号数组元素必须由逗号“,”或空格分隔。或空格分隔。u 利用利用M M文件创建和保存数组文件创建和保存数组对于今后经常需要调用的数组,尤其是比较大而复杂的数组,为它对于今后经常需要调用的数组,尤其是比较大而复杂的数组,为它专门建立一个专门建立一个M M文件是值得的。文件是值得的。第6页,共70页,编辑于2022年,星期二Matlab程序设计程序设计u MATLABMATLAB函数函数法法zeros(m,nzeros(m,n)生成全生成全0 0矩阵矩阵ones(
6、m,n)ones(m,n)生成全生成全1 1矩阵矩阵eye(m,n)eye(m,n)生成单位矩阵生成单位矩阵rand(m,n)rand(m,n)生成均匀分布的随机矩阵生成均匀分布的随机矩阵(0.01.0)(0.01.0)randn(m,n)randn(m,n)生成正态分布的随机矩阵生成正态分布的随机矩阵magic(n)magic(n)产生产生n n阶魔方矩阵(行、列、对角线元阶魔方矩阵(行、列、对角线元素和相等)素和相等)u 通过通过MATMAT数据文件加载矩阵数据文件加载矩阵loadload指令,或指令,或File File Import DataImport Data第7页,共70页,编辑
7、于2022年,星期二Matlab程序设计程序设计第二节数组元素的标识n 一维数组的标识n 二维数组的标识 全下标标识全下标标识:行下标,列下标:行下标,列下标优点:优点:几何概念清楚,引述简单。几何概念清楚,引述简单。例例:矩阵矩阵A=1 2 3 4 5A=1 2 3 4 5 6 7 8 9 106 7 8 9 1011 12 13 14 15 11 12 13 14 15 则则 A(2A(2,3)=8 ,A(33)=8 ,A(3,2)=12 2)=12 A(3 A(3,5)=15,A(15)=15,A(1,5)=5 5)=5 第8页,共70页,编辑于2022年,星期二Matlab程序设计程序
8、设计第9页,共70页,编辑于2022年,星期二Matlab程序设计程序设计第10页,共70页,编辑于2022年,星期二Matlab程序设计程序设计 逻辑逻辑1 1标识标识 -通过与通过与A A同样大小的逻辑数组同样大小的逻辑数组L L中中“逻辑值逻辑值1 1”所在的位置,指所在的位置,指出出A A中元素的位置。中元素的位置。-L-L的元素或是的元素或是0 0或是或是1 1,它是,它是“逻辑数组逻辑数组(Logical Array)(Logical Array)”。是一种特殊的数据类型。是一种特殊的数据类型。例例:A(L):A(L)逻辑数组的创建直接建立逻辑数组x=true false用逻辑运算
9、建立逻辑数组第11页,共70页,编辑于2022年,星期二Matlab程序设计程序设计子数组寻访和赋值格式汇总表 子数组寻访和赋值子数组寻访和赋值使使 用用 说说 明明A(r,c)A(r,c)它由它由A A的的“r r指定行指定行”和和“c c指定列指定列”上的元素组成上的元素组成A(r,:)A(r,:)它由它由A A的的“r r指定行指定行”和和“全部列全部列”上的元素组成上的元素组成A(:,c)A(:,c)它由它由A A的的“全部行全部行”和和“c c指定列指定列”上的元素组成上的元素组成A(:)A(:)“单下标元素单下标元素”寻访。它由寻访。它由A A的各列按自左到右的次序,首尾相接而生成
10、的各列按自左到右的次序,首尾相接而生成“一维长列一维长列”数组数组A(s)A(s)“单下标单下标”寻访。生成寻访。生成“s s指定的指定的”一维数组。一维数组。s s若是若是“行数组行数组”(或(或“列数组列数组”),则),则A(s)A(s)就是就是长度相同的长度相同的“行数组行数组”(或(或“列数组列数组”)A(L)A(L)“逻辑逻辑1 1”寻访。生成寻访。生成“一维一维”列数组:由与列数组:由与A A同样大小的同样大小的“逻辑数组逻辑数组”L L中的中的“1 1”元素选出元素选出A A的的对应元素;按对应元素;按“单下标单下标”次序排成长列组成。次序排成长列组成。A(r,c)=SaA(r,
11、c)=Sa以以“双下标双下标”方式,对子数组方式,对子数组A(r,c)A(r,c)进行赋值;进行赋值;SaSa的的“行宽、列长行宽、列长”必须与必须与A(r,c)A(r,c)的的“行宽、行宽、列长列长”相同相同A(:)=D(:)A(:)=D(:)全元素赋值方式。结果:保持全元素赋值方式。结果:保持A A的的“行宽、列长行宽、列长”不变。条件:不变。条件:A A、D D两个数组的总元素相等,两个数组的总元素相等,但但“行宽、列长行宽、列长”不一定相同不一定相同A(s)=SaA(s)=Sa按按“单下标单下标”方式,对方式,对A A的部分元素重新赋值。结果:保持的部分元素重新赋值。结果:保持A A的
12、的“行宽、列长行宽、列长”不变。条件:不变。条件:s s单下标数组的长度必须与单下标数组的长度必须与“一维数组一维数组”Sa Sa的长度相等,但是的长度相等,但是s s、SaSa不一定同是不一定同是“行数组行数组”或或“列数组列数组”第12页,共70页,编辑于2022年,星期二Matlab程序设计程序设计n 多(高)维数组的创建多(高)维数组的创建多维数组的第一维称为多维数组的第一维称为“行(行(RowRow)”,第二维称为,第二维称为“列(列(ColumnColumn)”,第三维,第三维称为称为“页(页(PagePage)”,第四维称为,第四维称为“箱(箱(BoxBox)”,直接通过全下标元
13、素赋值方式创建多维数组;直接通过全下标元素赋值方式创建多维数组;由若干同样大小的低维数组组合成多维数组;由若干同样大小的低维数组组合成多维数组;由函数由函数ones,zeros,rand,randnones,zeros,rand,randn直接创建标准多维数组;直接创建标准多维数组;借助借助cat,repmat,reshapecat,repmat,reshape等函数构作多维数组。等函数构作多维数组。第三节多维数组的创建和标识第13页,共70页,编辑于2022年,星期二Matlab程序设计程序设计n多维数组的标识数组的维数(数组的维数(DimensionDimension)和)和ndimsnd
14、ims指令指令指令指令ndims(A)ndims(A)可直接给出数组可直接给出数组A A的维数。的维数。数组的大小(数组的大小(SizeSize)和)和sizesize指令指令不管不管A A数组的维数是多少,数组的维数是多少,size(A)size(A)可给出可给出A A各维的大小,而各维的大小,而指令指令length(A)length(A)可给出所有维中的最大长度。即可给出所有维中的最大长度。即length(A)length(A)等等价于价于max(size(A)max(size(A)。第14页,共70页,编辑于2022年,星期二Matlab程序设计程序设计第四节 数组运算和矩阵运算无无论论
15、在在数数组组上上施施加加什什么么运运算算(+、-、或或函函数数),总总认认为为那那种种运运算算对对被被运运算算数数组组中中的的每每个个元元素素(ElementElement)平平等等地地实实施施同同样的操作。样的操作。当当两两个个数数组组具具有有相相同同阶阶数数时时,进进行行加加、减减、乘乘、除除的的点点运运算,其运算是按元素对元素方式进行的。算,其运算是按元素对元素方式进行的。n 数组运算第15页,共70页,编辑于2022年,星期二Matlab程序设计程序设计n 矩阵运算矩阵转置:转置符:矩阵转置:转置符:矩阵的乘法矩阵的乘法矩阵的相除矩阵的相除左除,符号为左除,符号为/右除,符号为右除,符
16、号为 矩阵的乘方矩阵的乘方当矩阵为方阵时,可进行指数乘法运算。当矩阵为方阵时,可进行指数乘法运算。第16页,共70页,编辑于2022年,星期二Matlab程序设计程序设计n 数组运算和矩阵运算的区别从外观形状和数据结构上看,二维数组和(数学中的)矩从外观形状和数据结构上看,二维数组和(数学中的)矩阵没有区别。阵没有区别。但是,矩阵作为一种变换或映射算子的体现,矩阵运算有着但是,矩阵作为一种变换或映射算子的体现,矩阵运算有着明确而严格的数学规则;数组运算是明确而严格的数学规则;数组运算是MATLABMATLAB软件所定义的规则,软件所定义的规则,其目的是为了数据管理方便、操作简单、指令形式自然和
17、执行其目的是为了数据管理方便、操作简单、指令形式自然和执行计算的有效。计算的有效。虽然数组运算尚缺乏严谨的数学推理,数组运算本身仍在完善和成虽然数组运算尚缺乏严谨的数学推理,数组运算本身仍在完善和成熟中,但它的作用和影响正随着熟中,但它的作用和影响正随着MATLABMATLAB的发展而扩大。的发展而扩大。第17页,共70页,编辑于2022年,星期二Matlab程序设计程序设计数组运算和矩阵运算指令对照汇总(一)数组运算和矩阵运算指令对照汇总(一)数数 组组 运运 算算矩矩 阵阵 运运 算算指指 令令含含 义义指指 令令含含 义义A.非共轭转置。相当于conj(A)A共轭转置A=s把标量s赋给A
18、的每个元素s+B标量s分别与B元素之和s-B,B-s标量s分别与B的元素之差s.*A标量s分别与A的元素之积s*A标量s分别与A每个元素之积s./B,B.ss分别被B的元素除s*inv(B)B阵的逆乘sA.nA的每个元素自乘n次AnA为方阵时,自乘n次A.p对A的各元素分别求非整数幂Ap方阵A的非整数乘方p.A以p为底,分别以A的元素为指数求幂值pAA阵为方阵时,标量的矩阵乘方A+B对应元素相加A+B矩阵相加A-B对应元素相减A-B矩阵相减第18页,共70页,编辑于2022年,星期二Matlab程序设计程序设计数组运算和矩阵运算指令对照汇总(二)数组运算和矩阵运算指令对照汇总(二)数数 组组
19、运运 算算矩矩 阵阵 运运 算算指指 令令含含 义义指指 令令含含 义义A.*B对应元素相乘对应元素相乘A*B内维相同矩阵的乘积内维相同矩阵的乘积A./BA的元素被的元素被B的对应元素除的对应元素除A/BA右除右除BB.A(一定与上相同)(一定与上相同)BAA左除左除B(一般与右除不同)(一般与右除不同)exp(A)以自然数以自然数e为底,分别以为底,分别以A的的元素为指数,求幂元素为指数,求幂expm(A)A的矩阵指数函数的矩阵指数函数log(A)对对A的各元素求对数的各元素求对数logm(A)A的矩阵对数函数的矩阵对数函数sqrt(A)对对A的各元素求平方根的各元素求平方根sqrtm(A)
20、A的矩阵平方根函数的矩阵平方根函数f(A)求求A各个元素的函数值。各个元素的函数值。f(.)表示为上节所列各函数表示为上节所列各函数funm(A,FN)一般函数矩阵一般函数矩阵A#BA、B阵对应元素间的关系运阵对应元素间的关系运算。算。#代表关系运算符代表关系运算符ABA、B阵对应元素间的逻辑运阵对应元素间的逻辑运算。算。代表逻辑运算符代表逻辑运算符第19页,共70页,编辑于2022年,星期二Matlab程序设计程序设计第五节 特殊矩阵第20页,共70页,编辑于2022年,星期二Matlab程序设计程序设计n 非数NaN按按IEEEIEEE规定,规定,0/00/0,/,00等运算都会产生非数(
21、等运算都会产生非数(Not Not a Numbera Number)。该非数在)。该非数在MATLABMATLAB中用中用NaNNaN或或nannan记述。记述。根据根据IEEEIEEE数学规范,数学规范,NaNNaN具有以下性质:具有以下性质:NaNNaN参与运算所得的结果也是参与运算所得的结果也是NaNNaN,即具有传递性;,即具有传递性;非数没有大小概念,因此不能比较两个非数的大小。非数没有大小概念,因此不能比较两个非数的大小。非数的功用:非数的功用:真实记述真实记述0/00/0,/,00运算的后果;运算的后果;避免可能因避免可能因0/00/0,/,00运算而造成程序执行的中断;运算而
22、造成程序执行的中断;在数据可视化中,用来裁剪图形。在数据可视化中,用来裁剪图形。第21页,共70页,编辑于2022年,星期二Matlab程序设计程序设计n 空数组(空阵)“空空”数组数组是是MATLABMATLAB为操作和表述需要而专门设计的一种数组。为操作和表述需要而专门设计的一种数组。某维长度为某维长度为0 0或若干维长度均为或若干维长度均为0 0的数组都是的数组都是“空空”数组。数组。“空空”数组的数组的功用功用:在有在有“空空”数组参与的运算时,计算结果中的数组参与的运算时,计算结果中的“空空”可以合理可以合理地解释地解释“所得结果的含义所得结果的含义”;运用运用“空空”数组对其他非空
23、数组赋值,可以改变数组的大数组对其他非空数组赋值,可以改变数组的大小,但不能改变数组的维数。小,但不能改变数组的维数。第22页,共70页,编辑于2022年,星期二Matlab程序设计程序设计第六节 关系操作和逻辑操作u在程序流控制和逻辑、模糊逻辑推理中,都需要对一类是非在程序流控制和逻辑、模糊逻辑推理中,都需要对一类是非问题作出问题作出“是真,是假是真,是假”的回答。为此的回答。为此MATLABMATLAB设计了关系操设计了关系操作、逻辑操作作、逻辑操作 和一些相关函数。和一些相关函数。uMATLABMATLAB的的约定约定:在所有关系表达式和逻辑表达式中,作为输入的任何非在所有关系表达式和逻
24、辑表达式中,作为输入的任何非0 0数都被看作数都被看作是是“逻辑真逻辑真”,而只有,而只有0 0才被认为是才被认为是“逻辑假逻辑假”。所有关系表达式和逻辑表达式的计算结果,即输出,是一个由所有关系表达式和逻辑表达式的计算结果,即输出,是一个由0 0和和1 1组组成的成的“逻辑数组(逻辑数组(Logical ArrayLogical Array)”。在此数组中的。在此数组中的1 1表示表示“真真”,0 0表表示示“假假”。逻辑数组是一种特殊的数值数组。逻辑数组是一种特殊的数值数组。第23页,共70页,编辑于2022年,星期二Matlab程序设计程序设计指指 令令含含 义义指指 令令含含 义义小于
25、小于=大于等于大于等于=小于等于小于等于=等于等于大于大于=不等于不等于 说明说明 u标量可以与任何维数组进行比较。比较在此标量与数组每个元素之间进标量可以与任何维数组进行比较。比较在此标量与数组每个元素之间进行,因此比较结果将与被比较数组同维。行,因此比较结果将与被比较数组同维。u当比较量中没有标量时,关系符两端进行比较的数组必须维数相同。比当比较量中没有标量时,关系符两端进行比较的数组必须维数相同。比较在两数组相同位置上的元素间进行,因此比较结果将与被比数组同维。较在两数组相同位置上的元素间进行,因此比较结果将与被比数组同维。n 关系操作第24页,共70页,编辑于2022年,星期二Matl
26、ab程序设计程序设计指指 令令含含 义义指指 令令含含 义义指指 令令含含 义义与、和与、和|或或否、非否、非 说明说明 u标量可以与任何维数组进行逻辑运算。运算比较在标量与数组每个元素标量可以与任何维数组进行逻辑运算。运算比较在标量与数组每个元素之间进行,因此运算结果与参与运算的数组同维。之间进行,因此运算结果与参与运算的数组同维。u当逻辑运算中没有标量时,参与运算的数组必须维数相同。运算在两数当逻辑运算中没有标量时,参与运算的数组必须维数相同。运算在两数组相同位置上的元素间进行,因此运算结果数组必定和参与运算的数组组相同位置上的元素间进行,因此运算结果数组必定和参与运算的数组同维。同维。n
27、 逻辑操作第25页,共70页,编辑于2022年,星期二Matlab程序设计程序设计n 关系、逻辑函数MATLABMATLAB中能给出中能给出“逻辑数组逻辑数组”类型计算结果的函数有很多,类型计算结果的函数有很多,包括:关系逻辑函数、工作状态判断函数、特殊数据判断函包括:关系逻辑函数、工作状态判断函数、特殊数据判断函数、数据类型判断函数等。数、数据类型判断函数等。第26页,共70页,编辑于2022年,星期二Matlab程序设计程序设计关系逻辑函数关系逻辑函数指指 令令含含 义义all(A)all(A)当向量当向量A A的元素全非的元素全非0 0时,结果才是时,结果才是1 1;否则结;否则结果是果
28、是0 0any(A)any(A)只要向量只要向量A A中有非中有非0 0元素,结果就是元素,结果就是1 1;否则结;否则结果是果是0 0isequal(A,isequal(A,B)B)A A,B B对应元素相等时,相应元素位置取对应元素相等时,相应元素位置取1 1;否;否则取则取0 0 xor(A,B)xor(A,B)A A,B B对应元素同为对应元素同为0 0,或非,或非0 0时,相应元素位置时,相应元素位置取取0 0;否则取;否则取1 1第27页,共70页,编辑于2022年,星期二Matlab程序设计程序设计特殊数据判断指令指令指令含义含义指令指令含义含义isempty(isempty(x
29、)x)x x是空,则结果为是空,则结果为1 1isnan(x)isnan(x)对应对应x x中非数中非数NaNNaN元素的位元素的位置取置取1 1,其余均为,其余均为0 0isfiniteisfinite(x)(x)对应对应x x中有限大小元素的中有限大小元素的位置取位置取1 1,其余均为,其余均为0 0isprime(isprime(x)x)对应对应x x中质数元素的位置中质数元素的位置取取1 1,其余均为,其余均为0 0isinf(x)isinf(x)对应对应x x中无穷大小元素的中无穷大小元素的位置取位置取1 1,其余均为,其余均为0 0isreal(xisreal(x)对应对应x x中
30、实数元素的位置中实数元素的位置取取1 1,其余均为,其余均为0 0isletterisletter(x)(x)对应对应x x中英文字母的元素中英文字母的元素位置取位置取1 1,其余均为,其余均为0 0isspace(isspace(x)x)对应对应x x中空格的元素位置中空格的元素位置取取1 1,其余均为,其余均为0 0第28页,共70页,编辑于2022年,星期二Matlab程序设计程序设计数据类型判断指令指令指令含义含义指令指令含义含义isa(x,name)输入宗量输入宗量name是指具体数据是指具体数据类型的英文名称。假如类型的英文名称。假如x是指是指定的数据类型,则结果为定的数据类型,则
31、结果为1ishandle(x)若若x是图柄代号,则结果为是图柄代号,则结果为1iscell(x)若若x是元胞,则结果为是元胞,则结果为1islogical(x)若若x是逻辑数,则结果为是逻辑数,则结果为1iscellstr(x)若若x是字符串组成的元胞数是字符串组成的元胞数组,则结果为组,则结果为1isnumeric(x)若若x是数值,则结果为是数值,则结果为1ischar(x)若若x是字符串,则结果为是字符串,则结果为1isobject(x)若若x是对象,则结果为是对象,则结果为1isfield(x,name)若若name指定的名称是构架指定的名称是构架x的域名,则结果为的域名,则结果为1i
32、ssparse(x)若若x稀疏,则结果为稀疏,则结果为1isglobal(x)若若x是全局变量,结果为是全局变量,结果为1isstruct(x)若若x是构架,则结果为是构架,则结果为1第29页,共70页,编辑于2022年,星期二Matlab程序设计程序设计第七节第七节 字符串数组字符串数组v字符串数组简称串数组。字符串数组简称串数组。v字符串数组的字符串数组的作用作用:没有串数组及相应的操作,那么数据可视:没有串数组及相应的操作,那么数据可视化、图形用户界面化、图形用户界面GUIGUI的制作将会遇到困难,构作的制作将会遇到困难,构作MATLABMATLAB的宏的宏指令也将会遇到困难。指令也将会
33、遇到困难。v字符变量的字符变量的创建方式创建方式:把待建的字符放在:把待建的字符放在“单引号对单引号对”中。中。注意:注意:“单引号对单引号对”必须在英文状态下输入,其作用是必须在英文状态下输入,其作用是MATLABMATLAB识别送来内容识别送来内容“身份身份”(是变量名、数字,还是(是变量名、数字,还是字符串)所必需的。字符串)所必需的。v数字标量在内存中存放时需要数字标量在内存中存放时需要8 8个字节(个字节(ByteByte),而一个字符的),而一个字符的存放只需存放只需2 2个字节。个字节。第30页,共70页,编辑于2022年,星期二Matlab程序设计程序设计n 一维字符数组的创建
34、name=Thomas R.Lee字符数组的连接字符数组的连接 t=a b:a,b尾部的空格被保留尾部的空格被保留strcat(S1,S2,S3,.):horizontally concatenates corresponding rows of the character arrays S1,S2,S3 etc第31页,共70页,编辑于2022年,星期二Matlab程序设计程序设计n 复杂串数组的创建多行串数组的直接创建多行串数组的直接创建在直接创建多行串数组时,关键是要保证串数组的在直接创建多行串数组时,关键是要保证串数组的各行字符数各行字符数要相等要相等,即保证各行等长。为此,有时不得不
35、,即保证各行等长。为此,有时不得不通过空格符通过空格符的增减的增减来调节各行的长度,使它们彼此相等。来调节各行的长度,使它们彼此相等。例例:S=This string array has multiple rows.增加一空格使两行长度相等第32页,共70页,编辑于2022年,星期二Matlab程序设计程序设计利用串操作函数创建多行串数组利用串操作函数创建多行串数组用专门函数用专门函数char,str2mat,strvcatchar,str2mat,strvcat创建多行串数组示例。创建多行串数组示例。CharChar:创创建建字字符符串串数数组组或或将将其其他他类类型型变变量量转转化化为为字
36、字符符串串数数组(组(与与区别区别)str2mat str2mat:将字符串转换为:将字符串转换为含有空格行含有空格行的数组的数组StrvcatStrvcat:创建字符串数组(:创建字符串数组(不不含空格行含空格行)这这三三个个函函数数创创建建多多行行数数组组时时,不不必必担担心心每每行行字字符符数数是是否否相相等等。它它们们总总会会按按最最长长行行设设置置第第二二维维的的长长度度,其其他他行行的的尾尾部部用用空空格格填充。填充。n 复杂串数组的创建第33页,共70页,编辑于2022年,星期二Matlab程序设计程序设计n 复杂串数组的创建第34页,共70页,编辑于2022年,星期二Matla
37、b程序设计程序设计n 执行字符串 eval函数(执行表达式)eval(expression)a1,a2,a3,=eval(function(b1,b2,b3,)feval函数(执行函数)y1,y2,=feval(fhandle,x1,xn)y1,y2,=feval(function,x1,xn)第35页,共70页,编辑于2022年,星期二Matlab程序设计程序设计串转换函数指指 令令含含 义义指指 令令含含 义义abs把串翻译成把串翻译成ASCII码码hex2dec16-进制串转换为十进制整进制串转换为十进制整数数base2decX-进制串转换为十进制整数进制串转换为十进制整数hex2num
38、16-进制串转换为浮点数进制串转换为浮点数bin2dec二进制串转换为十进制整数二进制串转换为十进制整数int2str把整数转换为串把整数转换为串char把把ASCII码及其他非数值类码及其他非数值类数据转换成字符串数据转换成字符串mat2str把数值矩阵转换为把数值矩阵转换为eval可调可调用的格式用的格式dec2base十进制整数转换为十进制整数转换为X进制串进制串num2str把数值转换为串把数值转换为串dec2bin十进制整数转换为二进制串十进制整数转换为二进制串setstr把把ASCII码翻译成串码翻译成串dec2hex十进制整数转换为十六进制十进制整数转换为十六进制串串sprint
39、f以控制格式把数值转换为串以控制格式把数值转换为串double把任何类型数据转换成双精把任何类型数据转换成双精度数值度数值sscanf在控制格式下把串转换为数在控制格式下把串转换为数值值fprintf把格式化数据写到文件或屏把格式化数据写到文件或屏幕幕str2num把串转换为数值把串转换为数值第36页,共70页,编辑于2022年,星期二Matlab程序设计程序设计串操作函数(一)指指 令令含含 义义blanks(n)创建创建n个空格串个空格串char(s1,s2,)把串把串s1,s2等逐个写成行,形成多行数组等逐个写成行,形成多行数组deblank(s)删去串尾部的空格符删去串尾部的空格符ev
40、al(s)把串把串s当作当作MATLAB指令运行指令运行eval(s1,sc)把串把串s1当作当作MATLAB指令运行。若指令运行。若s1运行发生错误,则运行发生错误,则运行运行scfeval(f,x,y,)对输入宗量对输入宗量x,y等计算函数等计算函数ffindstr(s1,s2)在较长串中,找出短串的起始字符的下标在较长串中,找出短串的起始字符的下标ischar(s)s是字符串则判是字符串则判“真真”给出逻辑给出逻辑1isletter(s)以逻辑以逻辑1指示指示s里文字符的位置里文字符的位置isspace(s)以逻辑以逻辑1指示指示s里空格符的位置里空格符的位置lasterrMATLAB发
41、出的最新错误信息发出的最新错误信息第37页,共70页,编辑于2022年,星期二Matlab程序设计程序设计串操作函数(二)指指 令令含含 义义lower(s)使使s里的英文字母全部小写里的英文字母全部小写str2mat(s1,s2,)把串把串s1,s2等逐个写成行,形成多行数组,并删出全空行等逐个写成行,形成多行数组,并删出全空行strcat(s1,s2,)把串把串s1,s2等连接成长串等连接成长串strcmp(s1,s2)若串若串s1,s2相同,则判相同,则判“真真”给出逻辑给出逻辑1strjust(s)字符串的对齐方式:或右对齐,或左对齐,或对中字符串的对齐方式:或右对齐,或左对齐,或对中
42、strmatch(s1,s2)逐行搜索串逐行搜索串s2,给出以,给出以s1开头的那些行的行号开头的那些行的行号strncmp(s1,s2,n)若串若串s1,s2的前的前n个字符相同,则判个字符相同,则判“真真”给出逻辑给出逻辑1strrep(s1,s2,s3)串串s1中的所有出现中的所有出现s2的地方替换为的地方替换为s3strtok(s)找出第一个间隔符(空格、制表位、回车符)前的内容找出第一个间隔符(空格、制表位、回车符)前的内容strvcat(s1,s2,)把串把串s1,s2等逐个写成行,形成多行数组等逐个写成行,形成多行数组upper(s)使使s里的英文字母全部大写里的英文字母全部大写
43、第38页,共70页,编辑于2022年,星期二Matlab程序设计程序设计第八节第八节 异质(元胞)数组异质(元胞)数组l异质(元胞)数组的基本组分(异质(元胞)数组的基本组分(ElementElement)是)是元胞元胞(Cell Cell)(抽)(抽屉或单元)。屉或单元)。l每个元胞本身在数组中是平等的,它们只能以下标区分。每个元胞本身在数组中是平等的,它们只能以下标区分。l元胞可以存放任何类型、任何大小的数组(如任意维数值数组、字元胞可以存放任何类型、任何大小的数组(如任意维数值数组、字符串数组、符号对象等)。而且,同一个异质(元胞)数组中各元符串数组、符号对象等)。而且,同一个异质(元胞
44、)数组中各元胞中的内容可以不同。胞中的内容可以不同。l异质(元胞)数组的维数不受限制;异质(元胞)数组对元胞的异质(元胞)数组的维数不受限制;异质(元胞)数组对元胞的编址方法也有编址方法也有单下标编址单下标编址和和全下标编址全下标编址两种。两种。第39页,共70页,编辑于2022年,星期二Matlab程序设计程序设计l对异质(元胞)数组来说,对异质(元胞)数组来说,元胞元胞和和元胞里的内容元胞里的内容是是两个不同范畴的东西。因此,寻访元胞和寻访元胞中的两个不同范畴的东西。因此,寻访元胞和寻访元胞中的内容是两种不同的操作。内容是两种不同的操作。lMATLABMATLAB设计了两种不同的操作:设计
45、了两种不同的操作:元胞外标识元胞外标识(Cell IndexingCell Indexing)元胞内编址元胞内编址(Content AddressingContent Addressing)例:例:lA(2,3)A(2,3):是指:是指A A异质(元胞)数组中的第异质(元胞)数组中的第2 2行第行第3 3列元胞元素;列元胞元素;lA2,3A2,3:是指:是指A A异质(元胞)数组第异质(元胞)数组第2 2行第行第3 3列元胞中所允许存或取的内容;列元胞中所允许存或取的内容;注意:两者的区别仅在于所用的括号不同。注意:两者的区别仅在于所用的括号不同。l“外标识的元胞元素外标识的元胞元素”用的是用
46、的是“圆括号圆括号”l“内编址元胞元素内编址元胞元素”内涵内涵”用的是用的是“花括号花括号”第40页,共70页,编辑于2022年,星期二Matlab程序设计程序设计n 异质(元胞)数组的创建直接使用花括号直接使用花括号将所有元素内容一次设定完成将所有元素内容一次设定完成 A=A=how are you.,1 2;3 4;eye(3,4),Tom,Janehow are you.,1 2;3 4;eye(3,4),Tom,Jane外标识元胞元素赋值法外标识元胞元素赋值法 A(1,1)=How are you.A(1,1)=How are you.A(1,2)=5+3i A(1,2)=5+3i编址
47、元胞元素内涵的直接赋值法编址元胞元素内涵的直接赋值法 A1,1=How are you.A1,1=How are you.A1,2=5+3i A1,2=5+3i第41页,共70页,编辑于2022年,星期二Matlab程序设计程序设计n 异质(元胞)数组的创建利用利用cellcell函数为元胞数组预留空间函数为元胞数组预留空间(1)cell(n)(1)cell(n)创建一个创建一个n nn n的空元胞数组的空元胞数组(2)cell(m,n)or cell(m n)(2)cell(m,n)or cell(m n)创建一个创建一个m mn n的空元胞数组的空元胞数组(3)cell(m,n,p,(3)
48、cell(m,n,p,)or cell(m n p)or cell(m n p)创建一个创建一个m mn np的空元胞数组的空元胞数组(4)cell(size(A)(4)cell(size(A)创建一个与数组创建一个与数组A A相同大小的空元胞数组相同大小的空元胞数组第42页,共70页,编辑于2022年,星期二Matlab程序设计程序设计n 异质(元胞)数组的内容显示使用使用celldispcelldisp命令显示元胞数组的内容命令显示元胞数组的内容 celldisp(A):celldisp(A):以列顺序显示元胞数组以列顺序显示元胞数组A A的内容的内容 celldisp(A,name):c
49、elldisp(A,name):用串用串namename作为数组的显示名作为数组的显示名使用使用cellplotcellplot命令以图形显示元胞数组的内容命令以图形显示元胞数组的内容 cellplot(A):cellplot(A):涂满颜色的方格表示向量或数组的元素涂满颜色的方格表示向量或数组的元素,标量和短文本显示为文标量和短文本显示为文本。本。cellplot(A,cellplot(A,lengendlengend):旁边显示一图例:旁边显示一图例第43页,共70页,编辑于2022年,星期二Matlab程序设计程序设计n 异质(元胞)数组内容的获取取一个元胞取一个元胞 A(1,2)A(1
50、,2)取一个元胞的内容取一个元胞的内容 A2,1 A2,1 取元胞内的子数组取元胞内的子数组 A2,1(2 A2,1(2,2)2)同时调取多个元胞内容同时调取多个元胞内容 x1,x2,x3=deal(A2,3,4)x1,x2,x3=deal(A2,3,4)第44页,共70页,编辑于2022年,星期二Matlab程序设计程序设计n异质(元胞)数组的扩充、收缩和重组异质(元胞)数组的扩充异质(元胞)数组的扩充 利用利用cellcell指令创建元胞数组指令创建元胞数组元胞数组的元胞数组的“列列”扩充和扩充和“行行”扩充扩充异质(元胞)数组的收缩和重组异质(元胞)数组的收缩和重组异质(元胞)数组的收缩