第2章运算基础精.ppt
第2章运算基础第1页,本讲稿共45页2.5 2.5 矩阵和数组的运算矩阵和数组的运算矩阵运算规则是按照矩阵作为运算要素定矩阵运算规则是按照矩阵作为运算要素定义的,义的,数组运算是按照矩阵元素作为运算要素定数组运算是按照矩阵元素作为运算要素定义的。义的。标量运算是矩阵和数组的运算的特例。标量运算是矩阵和数组的运算的特例。第2页,本讲稿共45页2.5.1 矩阵和数组的算术运算矩阵和数组的算术运算 1 矩阵和数组的加减运算矩阵和数组的加减运算l两两个个矩矩阵阵必必须须同同型型时时才才可可以以进进行行加加减减运运算算。如如有有一一个个是是标标量量,则则该该标标量量与与矩矩阵阵的的每每个个元元素素进进行加减运算。行加减运算。l数组的加减运算法则与矩阵的加减运算法则相数组的加减运算法则与矩阵的加减运算法则相同。同。第3页,本讲稿共45页例例2-322-32 设设 求求 A A2 2B。方法方法1 1:A=4-3 1;2 0 5;B=1 2 0;-1 0 3;A-2*B方法方法2 2:A=4-3 1;2 0 5;B=1 2 0;-1 0 3;b=uminus(2*B)%,返回,返回2*B的相反数的相反数A+b第4页,本讲稿共45页2 矩阵和数组的乘法运算矩阵和数组的乘法运算矩阵的乘法运算符为矩阵的乘法运算符为 *,定义为:,定义为:设设A=(aij)ms,B=(bij)sn,A=(aij)ms,B=(bij)sn,则则A A与与B B的乘积的乘积C CAB=(cij)mnAB=(cij)mn是是 mnmn矩阵,其中矩阵,其中cij(i=1,2,cij(i=1,2,m,m;j=1,2,;j=1,2,n),n)等于等于A A的第的第i i行与行与B B的第的第j j列对应元素的列对应元素的乘积之和。乘积之和。数组的乘法运算符为数组的乘法运算符为 .*.*,两个矩阵必须同型时才可以进,两个矩阵必须同型时才可以进行数组乘法运算。行数组乘法运算。运算规则为:矩阵运算规则为:矩阵A A和和B B中的对应元素相乘。中的对应元素相乘。如果参加运算的矩阵其中有一个是标量时,矩阵和数组的如果参加运算的矩阵其中有一个是标量时,矩阵和数组的乘法运算均为标量与矩阵的每个元素进行乘法运算。乘法运算均为标量与矩阵的每个元素进行乘法运算。第5页,本讲稿共45页例例2-332-332-332-33 求乘积求乘积 AB AB AB AB 和和 BABA。A=1 0 3;2 1 0;B=4 1;-1 1;2 0;A*B,B*A第6页,本讲稿共45页例例2-342-34 求求 (AB)(AB)T T T T和和B BT TAAT T T T(T T为转置运为转置运 算)。算)。A=1-1 2;2 0 1;B=2-1 0;1 1 3;4 2 1;(A*B)B*A第7页,本讲稿共45页3 矩阵和数组的除法运算矩阵和数组的除法运算矩阵和数组的除法运算矩阵和数组的除法运算矩矩阵阵除除法法运运算算的的运运算算符符为为 和和/,分分别别表表示示左左除除和和右除。右除。矩阵除法的定义为:矩阵除法的定义为:AB=AAB=A-1-1B B A/B=ABA/B=AB-1-1其其中中A A-1-1和和B B-1-1是是矩矩阵阵A A和和B B的的逆逆,矩矩阵阵B B的的逆逆也也可可用用函数函数invinv求得。求得。第8页,本讲稿共45页除法运算的运算符为除法运算的运算符为.和和././,分别数组为数,分别数组为数组的左除和右除,表示数组的相应元素相除。组的左除和右除,表示数组的相应元素相除。两个矩阵必须同型时才可以进行数组除法运两个矩阵必须同型时才可以进行数组除法运算。算。定义为:定义为:设设A=(aA=(aijij)mnmn,B=(b,B=(bijij)mnmn,则数组的右除为则数组的右除为C=(cC=(cijij)mnmn=(a=(aijij/b/bijij)mnmn,数组的左除为数组的左除为C=(cC=(cijij)mnmn=(b=(bijij/a/aijij)mnmn。第9页,本讲稿共45页例例2-352-35 求解方程组求解方程组求解方程组求解方程组A=2 2-1 1;4 3-1 2;8 3-3 4;3 3-2-2;b=4 6 12 6;X=Ab%等价语句为等价语句为 X=inv(A)*b第10页,本讲稿共45页2.5.2 矩阵和数组的乘方运算矩阵和数组的乘方运算l矩阵乘方运算的运算符为矩阵乘方运算的运算符为,运算表达式为,运算表达式为ABAB,矩阵乘方运算的含义是:,矩阵乘方运算的含义是:ABAB表示方阵表示方阵A A自乘自乘B B次。次。l数数组组乘乘方方运运算算的的运运算算符符为为.,运运算算表表达达式式为为A.BA.B,其中,其中A A和和B B都可以是矩阵或标量。都可以是矩阵或标量。第11页,本讲稿共45页数组乘方运算有下列形式:数组乘方运算有下列形式:l当当A A为为矩矩阵阵,B,B为为正正整整数数时时,则则将将a aijij自自乘乘B B次;次;l当当A A为为矩矩阵阵,B,B也也为为矩矩阵阵时时,A A和和B B矩矩阵阵必必须须同型同型,则将,则将a aijij自乘自乘b bijij次。次。l当当A A为为正正整整数数,B,B为为矩矩阵阵时时,将将AbAbijij构构成成新新矩阵的第矩阵的第i i行第行第j j列元素。列元素。其中其中a aijij和和b bijij分别表示矩阵分别表示矩阵A A和和B B的第的第i i行行第第j j列元素。列元素。第12页,本讲稿共45页例例2-382-38 求求1 1 1 1到到到到10101010的自然对数和常用的自然对数和常用 对数。对数。x=1:10;x=1:10;log(x)%log(x)%返回值为自然对数返回值为自然对数log10(x)%log10(x)%返回值为常用对数返回值为常用对数如果求如果求2 2为底的对数呢?为底的对数呢?log10(x)/log10(2)log10(x)/log10(2)第13页,本讲稿共45页2.6 2.6 字符串字符串2.6.1字符串的定义字符串的定义MATLABMATLAB将将字字符符串串当当作作一一个个行行向向量量,每每个个元元素素对对应应一一个个字字符符,一一个个字字符符占占两两个个字字节节,并并且且每每一一字字符符(包包括括空空格格)以以其其ASCIIASCII码码的的形形式式存放,其标识方法和数值向量相同。存放,其标识方法和数值向量相同。第14页,本讲稿共45页例例2-392-39 建立任意的两个字符串,并查看字建立任意的两个字符串,并查看字建立任意的两个字符串,并查看字建立任意的两个字符串,并查看字 符串占用的字节信息。符串占用的字节信息。符串占用的字节信息。符串占用的字节信息。s1=Northeast Forest Uiversity%赋值方式建立字符串赋值方式建立字符串s1s2=Haerbin Heilongjiang%赋值方式建立字符串赋值方式建立字符串s2s2whos%查看字符串占用的字节信息查看字符串占用的字节信息第15页,本讲稿共45页常用的字符串函数常用的字符串函数常用的字符串函数常用的字符串函数 llengthlength 计算字符串的长度计算字符串的长度(即组成字符的个数即组成字符的个数)lclassclass 判断某一个变量是否为字符串,返回判断某一个变量是否为字符串,返回charchar则表则表示为字符串示为字符串lfindstrfindstr 寻找在某个长字符串中的子字符串,返回寻找在某个长字符串中的子字符串,返回其起始位置其起始位置ldeblankdeblank 删除字符串尾部的空格删除字符串尾部的空格levaleval 以表达式方式执行字符串以表达式方式执行字符串ldispdisp 显示字符串的内容显示字符串的内容第16页,本讲稿共45页2.6.2 字符串的连接和替换字符串的连接和替换 l strcat(S1,S2,S3,.)strcat(S1,S2,S3,.)功能:功能:返回返回S1,S2,S3的连接字符串的连接字符串 常用的字符串的连接和替换函数:lstrvcat(T1,T2,T3,.)strvcat(T1,T2,T3,.)功能:功能:返回返回T1,T2,T3,.的垂直连接字符串的垂直连接字符串lstrmatch(S1,S2)strmatch(S1,S2)功能:功能:在逐行搜索字符串在逐行搜索字符串s2,给出以给出以s1开头的那些行的行号开头的那些行的行号lstrrep(S1,S2,S3)strrep(S1,S2,S3)功能:功能:把字符串把字符串s1的所有出现的所有出现s2的地方替换为的地方替换为s3lstrtok(S)strtok(S)功能:功能:查找字符串查找字符串S的第一个间隔符(空格符、指表符、的第一个间隔符(空格符、指表符、回车符)前的内容回车符)前的内容第17页,本讲稿共45页例例2-402-402-402-40 分析下列语句的执行结果。分析下列语句的执行结果。分析下列语句的执行结果。分析下列语句的执行结果。test=This is a test!;position=findstr(test,is)array=strvcat(maxarray,min value,max value);result_1=strmatch(max,array)result_2=strrep(test,test,pest)token,remainder=strtok(This is a test!)第18页,本讲稿共45页2.6.3字符串比较函数字符串比较函数lstrcmp(S1,S2)strcmp(S1,S2)功功能能:比比较较字字符符串串是是否否相相等等。如如果果相相同同则则返返回回1 1,否否则则为为0 0。常用的字符串比较函数:lstrcmpi(S1,S2)strcmpi(S1,S2)功功能能:在在忽忽略略大大小小写写的的情情况况下下,比比较较字字符符串串是是否否相相等等。如果相同则返回如果相同则返回1 1,否则为,否则为0 0。lstrncmp(S1,S2,N)strncmp(S1,S2,N)功功能能:比比较较两两个个字字符符串串的的前前n n个个字字符符是是否否相相等等。如如果果相同则返回相同则返回1 1,否则为,否则为0 0。lstrncmpi(S1,S2,N)strncmpi(S1,S2,N)功功能能:在在忽忽略略大大小小写写的的情情况况下下,比比较较字字符符串串的的前前n n个个字字符符是否相等。是否相等。如果相同则返回如果相同则返回1 1,否则为,否则为0 0。第19页,本讲稿共45页例例2-412-41 分析下列语句的执行结果。分析下列语句的执行结果。分析下列语句的执行结果。分析下列语句的执行结果。str1=hello;str2=Hello;str3=help;c1=strcmp(str1,str2)c2=strcmpi(str1,str2)c3=strncmp(str1,str3,2)c4=strncmpi(str1,str3,2)第20页,本讲稿共45页2.6.4字符串转换函数字符串转换函数lupper(A)upper(A)功能:功能:把字符串把字符串A A中的任一小写字母转换为相应的大写中的任一小写字母转换为相应的大写字母字母常用的字符串转换函数:llower(A)lower(A)功能功能:把字符串把字符串A A中的任一大写字母转换为相应的中的任一大写字母转换为相应的小写字母小写字母ldouble(X)double(X)功能功能:转换字符串转换字符串X X为为ASCIIASCII码码lchar(X)char(X)功能功能:将将ASCIIASCII码码X X转换为字符串转换为字符串第21页,本讲稿共45页lint2str(X)int2str(X)功能功能:将整数:将整数X X转换为字符串转换为字符串lnum2str(X)num2str(X)功能:功能:将数值将数值X X转换成字符串转换成字符串lmat2strmat2str(MAT)(MAT)功能:功能:将数值矩阵将数值矩阵MATMAT转换为可执行的形式转换为可执行的形式第22页,本讲稿共45页例例2-422-42 分析下列语句的功能。分析下列语句的功能。x=5317;y=int2str(x)p=num2str(pi,7)p=num2str(pi,%10.5e)a=1 2 3;4 5 6;b=mat2str(a)str=sprintf(The value of pi=%8.6f.,pi)第23页,本讲稿共45页2.7 2.7 元胞数组元胞数组 2.7.1 元胞数组的建立元胞数组的建立l元元胞胞数数组组:一一个个数数组组里里存存放放各各种种不不同同类类型型的的数数据据。元元胞胞数数组组中中的的基基本本组组成成是是元元胞胞,每每一一个个元元胞胞是是用用来来存存放放各各种种不不同同类类型型的的数数据的单元。据的单元。l如如果果元元胞胞中中存存放放的的数数据据为为元元胞胞数数组组,则则为为元胞数组的嵌套使用。元胞数组的嵌套使用。第24页,本讲稿共45页1 赋值语句赋值语句赋值语句赋值语句 赋值语句的右边为用符号赋值语句的右边为用符号标记的不同类型的标记的不同类型的数据。数据。例例2-43 建立元胞数组,并查看元素的信息建立元胞数组,并查看元素的信息。a=This is the first example.,hadamard(2);ones(3),North;East第25页,本讲稿共45页查看查看a a的各个元素的信息:的各个元素的信息:a1,1a1,1a1,2a1,2a2,1a2,1a2,2a2,2第26页,本讲稿共45页例例例例2-442-44 用为各元胞元素赋值的方法创建元用为各元胞元素赋值的方法创建元用为各元胞元素赋值的方法创建元用为各元胞元素赋值的方法创建元 胞数组。胞数组。胞数组。胞数组。b(1,1)=This is the second example.;b(1,1)=This is the second example.;b(1,2)=hilb(3);b(1,2)=hilb(3);b(2,1)=zeros(2);b(2,1)=zeros(2);b(2,2)=South;West;b(2,2)=South;West;b%b%查看查看b b的内容的内容第27页,本讲稿共45页2 2 由各元胞元素赋值创建由各元胞元素赋值创建创建元胞数组的函数为:创建元胞数组的函数为:lcell(N)cell(N)创建空的创建空的NNNN的元胞数组的元胞数组lcell(M,N)cell(M,N)或或 cell cell(M,N)(M,N)创创建建空空的的M M NN的的元元胞数组胞数组第28页,本讲稿共45页例例2-452-45 由各元胞元素赋值创建元胞。由各元胞元素赋值创建元胞。c=cell(2);c=cell(2);c1,1=(This is the third example.);c1,1=(This is the third example.);c1,2=compan(1 0 3);c1,2=compan(1 0 3);c2,1=3+4*i-5;-10*i 3-4*i;c2,1=3+4*i-5;-10*i 3-4*i;c2,2=;%c2,2=;%元胞数组的第四个元素为空矩阵元胞数组的第四个元素为空矩阵 C%C%查看查看c c 的内容的内容第29页,本讲稿共45页显示元胞数组的内容的函数:显示元胞数组的内容的函数:lcelldisp(C)celldisp(C)功能:功能:显示元胞数组显示元胞数组C C的所有元素的内容的所有元素的内容celldisp,cellplot和cellfun:lcellplot(C)cellplot(C)功功能能:以以嵌嵌套套的的格格子子的的形形式式显显示示元元胞胞数数组组C C的的所所有有元元素素的的结构结构ld=cellfun(fun,c)d=cellfun(fun,c)功功能能:返返回回判判断断元元胞胞数数组组c c 的的元元素素数数据据类类型型和和基基本本信信息息的的数数组组d d,其其中中funfun为为isrealisreal,isemptyisempty,islogicalislogical,lengthlength,ndimsndims和和prodofsizeprodofsize。第30页,本讲稿共45页2.7.2 2.7.2 转换函数转换函数lM=cell2mat(C)M=cell2mat(C)功功能能:元元胞胞数数组组转转换换为为单单精精度度矩矩阵阵,其其中中C C为为多多维维元元胞胞数数组组,M M为为转转换换后后得得到到的的单单精精度度矩矩阵阵。要要求求输输入入的的元胞数组元素必须是同类型的数据。元胞数组元素必须是同类型的数据。元胞数组与其他数组的转换函数:cell2mat,mat2cell和num2cell。lC=mat2cell(X,M,N)C=mat2cell(X,M,N)功功能能:矩矩阵阵分分解解为为元元胞胞数数组组。其其中中X X为为多多维维元元胞胞数数组组,C C为转换后得到的矩阵。为转换后得到的矩阵。lC=num2cell(A)C=num2cell(A)功能:功能:转换数值数组为元胞数组。其中转换数值数组为元胞数组。其中A A为数值数组,为数值数组,C C为转换得到的元胞数组。为转换得到的元胞数组。第31页,本讲稿共45页例例2-462-462-462-46 元胞数组与其他数组的转换。元胞数组与其他数组的转换。x=1 2 3 4;5;9 6 7 8;10 11 2;cell2mat(x)%转换数值数组为单精度矩阵转换数值数组为单精度矩阵第32页,本讲稿共45页X=zeros(3,4)+5;C=mat2cell(X,1 2,1 3)%矩阵分解为元胞数组矩阵分解为元胞数组A=1 2 3 4;5 6 7 8;9 10 11 12;C=num2cell(A)%转换数值数组为元胞数组转换数值数组为元胞数组第33页,本讲稿共45页2.7.3 元胞数组的使用元胞数组的使用 1 1 直接引用直接引用l元胞数组的元素的引用可通过指出数组名称直接引元胞数组的元素的引用可通过指出数组名称直接引用。用。l元胞数组中可以引用的元素为元胞数组的结构、元元胞数组中可以引用的元素为元胞数组的结构、元胞数组的内容、元胞数组的部分元素。胞数组的内容、元胞数组的部分元素。第34页,本讲稿共45页例例2-472-47 演示元胞数组的直接引用方法。演示元胞数组的直接引用方法。a=This is the forth example.,magic(3);ones(3),North;Easta(1,2)%查看查看a(1,2)的结构的结构a1,2%查看查看a1,2元胞的内容元胞的内容a1,2(1)%引用引用a1,2元胞的第元胞的第1个元素个元素a1,2(1 2)%引用引用a1,2元胞的第元胞的第1、2个元素个元素第35页,本讲稿共45页2 扩展元胞数组扩展元胞数组例例 2-482-48 演示元胞数组的扩展方法。演示元胞数组的扩展方法。a3,3=5a3,3=5%扩扩展展a为为33的的数数组组,a(3,3)为为元元胞胞,内内容为容为5第36页,本讲稿共45页3 删除元胞数组删除元胞数组例例2-492-49 演示元胞数组的删除方法。演示元胞数组的删除方法。a3,3=%删除删除a的第三行、第三列元素的第三行、第三列元素a(3,:)=%删除删除a的第三列元素的第三列元素第37页,本讲稿共45页2.8 2.8 构架数组构架数组2.8.1 构架数组的建立构架数组的建立l构架数组的基本组成是域,每一个域是用构架数组的基本组成是域,每一个域是用来存放各种不同类型的数据的单元。来存放各种不同类型的数据的单元。l构架数组的建立也有三种方法:构架数组的建立也有三种方法:赋值语句、创建函数和转换函数。赋值语句、创建函数和转换函数。第38页,本讲稿共45页1 赋值语句赋值语句l例例2-502-50 使使用用赋赋值值语语句句依依次次为为各各个个域域赋赋值值的的方方法法建建立立构构架架数数组组,存存储储两两名名学学生生的的名名字字、学号、性别、班级信息。学号、性别、班级信息。s.name=Wang Ming;s.number=19990101;s.sex=man;s.class=199901;第39页,本讲稿共45页l如查看构架数组的内容,语句为:如查看构架数组的内容,语句为:s sl如查看构架数组的某一个域内容,语句为:如查看构架数组的某一个域内容,语句为:s.name第40页,本讲稿共45页 s(2).name=Zhang Le;s(2).name=Zhang Le;s(2).number=19990201;s(2).number=19990201;s(2).sex=man;s(2).sex=man;l构构架架数数组组的的第第二二个个元元素素可可以以被被通通过过增增加加下下标标实现。实现。l如查看构架数组的各个域名,语句为:如查看构架数组的各个域名,语句为:s s第41页,本讲稿共45页l可通过下面的语句查看可通过下面的语句查看s s的内容:的内容:s(1),s(1),s(2)s(2)第42页,本讲稿共45页2 2 创建函数创建函数使用使用structstruct函数可以建立构架数组,格式为:函数可以建立构架数组,格式为:S=structS=struct (field1,VALUES1,field2,VALUES2,.(field1,VALUES1,field2,VALUES2,.)功功能能:创创建建构构架架数数组组S S,其其中中 field1field1的的值值赋为赋为VALUES1,field2VALUES1,field2的值赋为的值赋为VALUES2,VALUES2,第43页,本讲稿共45页例例 2-512-51 应用应用structstruct函数可以创建函数可以创建函数可以创建函数可以创建例例2-502-50的的构架数组。构架数组。s=struct(name,Wang Ming,number,19990101,class,199901,sex,man)第44页,本讲稿共45页重点内容:重点内容:(1 1)建立数值数组的常用方式;)建立数值数组的常用方式;(2 2)提取子数组的方法;)提取子数组的方法;(3 3)元胞数组与构架数组的建立和有关的常)元胞数组与构架数组的建立和有关的常 用函数;用函数;(4 4)矩阵与数组的乘除法运算和乘幂运算的)矩阵与数组的乘除法运算和乘幂运算的 规则;规则;(5 5)常用的矩阵和数组运算函数的调用格式)常用的矩阵和数组运算函数的调用格式 和功能。和功能。第45页,本讲稿共45页