matlab教案4

上传人:沙** 文档编号:243073631 上传时间:2024-09-15 格式:PPT 页数:156 大小:565.50KB
返回 下载 相关 举报
matlab教案4_第1页
第1页 / 共156页
matlab教案4_第2页
第2页 / 共156页
matlab教案4_第3页
第3页 / 共156页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第三讲,Matlab,的数据类型,主要内容:,MATLAB,基本数值类型,逻辑类型,字符串,元胞数组,结构,Matlab,的数据类型(续),3.1,概述,3.2,MATLAB,基本数值类型,3.3,逻辑类型和关系运算,3.4,字符串,3.5,元胞数组,3.6,结构,3.7,小结,3.1,概述,MATLAB,支持的基本数据类型,MATLAB,数据类型,基本数值类型 字符串,元胞数组 结构 函数句柄,Java,对象 逻辑类型,双精度类型 单精度类型 整数类型 用户自定义类 内嵌对象,int8,,,uint8,int16,,,uint16,int32,,,uint32,int64,,,uint64,概述(续),MATLAB,的基本数据类型是,双精度,数据类型和,字符,类型,MATLAB,的不同数据类型的变量或对象占用的内存空间不同,不同的数据类型的变量或对象也具有不同的操作函数,第三讲,3.1,概述,3.2,MATLAB,基本数值类型,3.3,逻辑类型和关系运算,3.4,字符串,3.5,元胞数组,3.6,结构,3.7,小结,MATLAB,的基本数值类型,主要用来描述基本的数值对象,MATLAB,还存在一些特定数据,常量,数据,是指在使用,MATLAB,过程中由,MATLAB,提供的公共数据,数据可以通过数据类型转换的方法转换常量到不同的数据类型,还可以被赋予新的数值,空数组,或空矩阵,在创建数组或者矩阵时,可以使用空数组或空矩阵辅助创建数组或者矩阵,3.2,Matlab,基本数值类型,3.,2.1,基本数值类型,数据类型,说 明,字节数,double,双精度数据类型,8,sparse,稀疏矩阵数据类型,N/A,single,单精度数据类型,4,uint8,无,符号,8,位整数,1,uint16,无符号,16,位整数,2,uint32,无符号,32,位整数,4,uint64,无符号,64,位整数,8,int8,有符号,8,位整数,1,int16,有符号,16,位整数,2,int32,有符号,32,位整数,4,int64,有符号,64,位整数,8,class,函数,可以用来,获取,变量或对象的,类型,可以用来创建用户自定义的数据类型,基本数值类型(续),例,A=1 2 3;, class(A),ans,=,double,whos,Name Size Bytes Class,A,1x3 24 double array,ans,1x6 12 char array,Grand total is 9 elements using 36 bytes, B=int16(A);, class(B),ans,=,int16,whos,Name Size Bytes Class,A 1x3 24 double array,B 1x3 6 int16 array,ans,1x5 10 char array,Grand total is 11 elements using 40 bytes,基本数值类型(续),MATLAB,和,C,语言在处理数据类型和变量时的区别,在,C,语言中,任何变量在使用之前必须声明,然后赋值,在声明变量时就指定了变量的数据类型,在,MATLAB,中,任何数据变量都,不需要预先声明,,,MATLAB,将自动地将数据类型设置为双精度类型,例,A=1 2 3;, B=3 4 5;, C=A+B;,whos,Name Size Bytes Class,A,1x3 24 double array,B 1x3 24 double array,C 1x3 24 double array,Grand total is 9 elements using 72 bytes,int16(A)+int16(B),? Error using = +,Function + is not defined for values of class int16.,基本数值类型(续),C=int16(A+B),C =,4 6 8, class(C),ans,=,int16,MATLAB,系统默认的运算都是针对,双精度,类型的数据或变量,稀疏矩阵的元素仅能使用双精度类型的变量,sparse,类型的数据变量和整数类型数据、单精度数据类型变量之间的转换是非法的,在进行数据类型转换时,若输入参数的数据类型就是需要转换的数据类型,则,MATLAB,忽略转换,保持变量的原有特性,基本数值类型(续),整数类型数据的运算函数,3.2.2,整数类型数据运算,函 数,说 明,bitand,数据位“与”运算,bitcmp,按照指定的数据位数求数据的,反码,bitor,数据位“或”运算,bitmax,最大的浮点整数数值,bitxor,数据位“异或”运算,bitset,将,指定的数据位设置为,1,bitget,获取指定的数据位数值,bitshift,数据位移操作,注意:参与整数运算的数据都必须大于,0,例:数据位“与”操作,A=86;B=77;, C=,bitand,(A,B),C =,68, a=uint16(A);b=uint16(B);, c=,bitand,(a,b),c =,68,86,的补码:,01010110,77,的补码:,01001101,“,与”运算的结果:,01000100,整数类型数据运算(续), whos,Name Size Bytes Class,A 1x1 8 double array,B 1x1 8 double array,C 1x1 8 double array,a 1x1 2 uint16 array,b 1x1 2 uint16 array,c 1x1 2 uint16 array,Grand total is 6 elements using 30 bytes,例:数据位操作(,bitset,函数), A=86;,dec2bin,(A),ans,=,1,0,10110, B=,bitset,(A,6,),B =,118, dec2bin(B),ans,=,1,1,10110, C=,bitset,(A,7,0),C =,22, dec2bin(C),ans,=,10110,整数类型数据运算(续),bitset,(A,B,C),函数根据输入的第二个参数设置相应的数据位的数值,若不指定第三个参数,则将相应的数据位设置为“,1”,,否则根据输入的第三个参数设置相应的数据位。,A=86,A =,86, B=,bitset,(A,6),B =,118, C=,bitset,(A,7,0),C =,22,例:数据位操作(,bitget,函数), A=86;, dec2bin(A),ans,=,1,0,10,1,10,bitget,(A,6,),ans,=,0,bitget,(A,3,),ans,=,1,整数类型数据运算(续),bitget,(A,B),函数根据输入的第二个参数获取指定的数据位的数值。,A=86;,bitget,(A,6),ans,=,0,bitget,(A,3),ans,=,1,例:数据位操作(,bitshift,函数), A=86;, dec2bin(A),ans,=,101,0110, D=,bitshift,(A,4,);, dec2bin(D),ans,=,1010110,0000, E=,bitshift,(A,-4,);, dec2bin(E),ans,=,101 ,(,0000101,),整数类型数据运算(续),Bitshift,(A,B),函数,第二个参数为,正,,则,左,移,第二个参数为,负,,则,右,移,A=86;, D=,bitshift,(A,4),D =,1376, E=,bitshift,(A,-4),E =,5,MATLB,的常量,3.2.3 MATLAB,的常量,常 量,说 明,ans,最近运算的结果,eps,浮点数相对精度,定义为,1.0,到最近浮点数的距离,realmax,MATLAB,能表示的实数的最大绝对值,realmin,MATLAB,能表示的实数的最小绝对值,pi,圆周率,的近似值,3.1415926,i,,,j,复数的虚部数据最小单位,inf,或,Inf,表示正无大,定义为,1/0,NaN,或,nan,非数,它产生于,0,,,0/0,,,/,等运算,eps,、,realmax,、,realmin,三个,常量具体的数值与运行,MATLAB,的计算机相关,不同的计算机系统可能具有不同的数值, eps,ans,=,2.2204e-016,realmax,ans,=,1.7977e+308,realmin,ans,=,2.2251e-308,MATLAB,的常量(续),MATLAB,的,常量数值是可以修改,的, pi=100,pi =,100,clear, pi,ans,=,3.1416,MATLAB,的常量(续),将,inf,应用于函数,计算结果可能为,inf,或,NaN,。,例:,NaN,和,Inf,运算示例, A=,Inf,;, class(A),ans,=,Double, B=int16(A),B =,32767,进行数据转换时,,Inf,将获取相,应数据类型的最大值,而,NaN,返回相应整数数据类型的数值,0,,,浮点数类型则仍然为,NaN,MATLAB,的常量(续),C=sin(A),C =,NaN, sin(C),ans,=,NaN, class(C),ans,=,double, int64(C),ans,=,0, int32(C),ans,=,0,例:最小复数单位的使用, a=i,a =,0 + 1.0000i, i=1,i =,1, b=i+j,b =,1.0000 + 1.0000i, clear, c=i+j,c =,0 + 2.0000i,MATLAB,的常量(续),MATLAB,的常量是可以赋予性的数值的。一旦被赋予了新的数值,则常量代表的就是新值,而不是原有的值,只有执行,clear,命令后,常量才会代表原来的值,空,数组是指某一个维或者某些维的长度为,0,的数组,为了完成某些,MATLAB,操作和运算而专门设计的一种数组,利用空数组可以修改数组的大小,一般不能修改数组的维数,3.2.4,空数组,创建空数组,例:, A=,A =, B=ones(2,3,0),B =,Empty array: 2-by-3-by-0, C=,randn,(2,3,4,0),C =,Empty array: 2-by-3-by-4-by-0,whos,Name Size Bytes Class,A,0x0 0 double array,B 2x3x0 0 double array,C 4-D 0 double array,Grand total is 0 elements using 0 bytes,空数组(续),空数组不意味着什么都没有,空数组类型的变量在,MATLAB,的工作空间中是存在的。,使用空数组,可以将大数组删除部分行或列,可以删除多维数组的某一页,空数组(续),例,A=reshape(1:24,4,6),A =,1,5,9,13,17 21,2,6,10,14,18 22,3,7,11,15,19 23,4,8,12,16,20 24, %,删除第,2,、,3,、,4,列, A(:,2 3 4)=,A =,1 17 21,2 18 22,3 19 23,4 20 24,空数组(续),思考:如何删除第,2,、,3,行?,?,A =,1 5 9 13 17 21,4 8 12 16 20 24,例,A=reshape(1:24,4,6),A =,1,5,9,13,17 21,2,6,10,14,18 22,3,7,11,15,19 23,4,8,12,16,20 24, %,删除第,2,、,3,、,4,列, A(:,2 3 4)=,A =,1 17 21,2 18 22,3 19 23,4 20 24,空数组(续),思考:如何删除第,2,、,3,行?,A(2 3,:)=,A =,1 5 9 13 17 21,4 8 12 16 20 24,例, A(2,2,3)=1,A(:,:,1) =,0 0,0 0,A(:,:,2) =,0 0,0 0,A(:,:,3) =,0 0,0 1,whos,Name Size Bytes Class,A 2x2x3 96 double array,Grand total is 12 elements using 96 bytes,空数组(续), A(:,:,3)=,A(:,:,1) =,0 0,0 0,A(:,:,2) =,0 0,0 0,whos,Name Size Bytes Class,A 2x2x2 64 double array,Grand total is 8 elements using 64 bytes,第三讲,3.1,概述,3.2,MATLAB,基本数值类型,3.3,逻辑类型和关系运算,3.4,字符串,3.5,元胞数组,3.6,结构,3.7,小结,3.3,逻辑类型和关系运算,逻辑数据类型,逻辑运算,关系运算,运算符的优先级,3.,3.1,逻辑数据类型,逻辑数据类型,逻辑数据类型就是仅具有两个数值的一种数据类型,True,用,1,表示,False,用,0,表示,任何数值都可以参与逻辑运算,非零值看作逻辑真,零值看作逻辑假,逻辑类型的数据只能通过数值类型转换,或者使用特殊的函数生成相应类型的数组或者矩阵,逻辑数据类型(续),创建逻辑类型数据的函数,函 数,说 明,logical,将任意类型的数组转变为逻辑类型数组,其中非零元素为真,零元素为假,True,产生逻辑真值数组,False,产生逻辑假值数组,逻辑数据类型(续),例:,A=eye(3),A =,1 0 0,0 1 0,0 0 1, B=logical(A),B =,1 0 0,0 1 0,0 0 1, C=true(size(A),C =,1 1 1,1 1 1,1 1 1,D=false(size(A),2),?,C=true(3,3),逻辑数据类型(续),例:,A=eye(3),A =,1 0 0,0 1 0,0 0 1, B=logical(A),B =,1 0 0,0 1 0,0 0 1, C=true(size(A),C =,1 1 1,1 1 1,1 1 1,D=false(size(A),2),D(:,:,1) =,0 0 0,0 0 0,0 0 0,D(:,:,2) =,0 0 0,0 0 0,0 0 0,C=true(3,3),逻辑数据类型(续),例:,A=eye(3),A =,1 0 0,0 1 0,0 0 1, B=logical(A),B =,1 0 0,0 1 0,0 0 1, C=true(size(A),C =,1 1 1,1 1 1,1 1 1,D=false(size(A),2),D(:,:,1) =,0 0 0,0 0 0,0 0 0,D(:,:,2) =,0 0 0,0 0 0,0 0 0,whos,Name Size Bytes Class,A 3x3 72 double array,B 3x3 9 logical array,C 3x3 9 logical array,D 3x3x2 18 logical array,Grand total is 45 elements using 108 bytes,逻辑类型的数组每一个元素仅占用一个字节的内存空间,C=true(3,3),逻辑数据类型(续),在,使用,true,或者,false,函数创建逻辑类型数组时,若不指明参数,则创建一个逻辑类型的标量,例,a=true,a =,1, b=false,b =,0, c=1,c =,1,isnumeric,(a),ans,=,0,isnumeric,(c),ans,=,1,islogical,(a),ans,=,1,islogical,(b),ans,=,1,islogical,(c),ans,=,0,在,MATLAB,中有些函数以,is,开头,这类函数是用来完成某种判断功能的函数。,isnumeric,(*):,判断输入的参数是否为数值类型,islogical,(*):,判断输入的参数是否为逻辑类型,能够处理逻辑类型数据的运算叫作逻辑运算,MATLAB,的逻辑运算,3.3.2,逻辑运算,运算符,说明,& &,具有短路作用的逻辑与操作,仅能处理标量,| |,具有短路作用的逻辑或操作,仅能处理标量,&,元素与操作,|,元素或操作,逻辑非操作,xor,逻辑异或操作,any,当,向量中的元素有非零元素时,返回真,all,当向量中的元素都是非零元素时,返回真,参与逻辑运算的操作数不一定必须是逻辑类型的变量或常量,,其他类型的数据也可以进行逻辑运算,,但运算结果一定是逻辑类型的数据,例:,a=eye(3),a =,1 0 0,0 1 0,0 0 1, b=a;b(3,1)=1,b =,1 0 0,0 1 0,1 0 1,逻辑运算(续),a&b,ans,=,1 0 0,0 1 0,0 0 1,whos,Name Size Bytes Class,a 3x3 72 double array,ans,3x3 9 logical array,b 3x3 72 double array,Grand total is 27 elements using 153 bytes,具有,短路作用,的逻辑“与”操作(,&,),和“或”操作(,|,),进行,a & b & c & d,运算时,若,a,为假(,0,),则后面的三个变量都不再被处理,运算结束,并返回运算结果逻辑假(,0,),进行,a | b | c | d,运算时,若,a,为真(,1,),则后面的三个变量都不再被处理,运算结束,并返回运算结果逻辑真(,1,),仅能处理标量,逻辑运算(续),例:,a=eye(3),a =,1 0 0,0 1 0,0 0 1, b=a;b(3,1)=1,b =,1 0 0,0 1 0,1 0 1, a&b,? Operands to the | and & operators must be,convertible to logical scalar values.,逻辑运算(续),例:, a=0;b=1;c=2;d=3;, a&b&c&d,ans,=,0, a=0;b=2;c=6;d=8;, a&b&c&d,ans,=,0, a=10;b=1;c=2;d=3;, a|b|c|d,ans,=,1, a=10;b=0;c=7;d=9;, a|b|c|d,ans,=,1,逻辑运算(续), whos,Name Size Bytes Class,a 1x1 8 double array,ans,1x1 1 logical array,b,1x1 8 double array,c 1x1 8 double array,d 1x1 8 double array,Grand total is 5 elements using 33 bytes,例:函数,any,和,all,的使用示例(,对向量,),a=1 2 3 0;, any(a),ans,=,1, all(a),ans,=,0,逻辑运算(续),c=1 2 3 4;, any(c),ans,=,1, all(c),ans,=,1, b=0 0 0 0;, any(b),ans,=,0, all(b),ans,=,0,例:函数,any,和,all,的使用示例(,对矩阵,), a=1 0 2;3 0 0;1 3 0;1 1 1,a =,1 0 2,3 0 0,1 3 0,1 1 1, any(a),ans,=,1 1 1, all(a),ans,=,1 0 0,逻辑运算(续),函数,any,和,all,是针对矩阵中每一,列,进行处理。,any,每,列,元素有非零值,则返回逻辑真,all,每,列,元素均为非零值,则返回逻辑真,关系运算是用来判断两个操作数关系的运算,MATLAB,的关系运算符,3.3.3,关系运算,运算符,说明,=,等于,=,不,等于,大于,=,大于等于,参与关系运算的操作数可以是各种数据类型的变量或者常数,运算结果是逻辑类型的数据,标量,可以和数组(或矩阵)进行比较,比较时自动扩展标量,返回的结果是和数组同维的逻辑类型数组,若比较的是两个数组,则数组必须是同维的,且每一维的尺寸必须一致,关系运算(续),例:,A=reshape(1:9,3,3),A =,1 4 7,2 5 8,3 6 9, B=magic(3),B =,8 1 6,3 5 7,4 9 2, AB,ans,=,0 1 1,0 0 1,0 0 1,关系运算(续), whos,Name Size Bytes Class,A 3x3 72 double array,B 3x3 72 double array,ans,3x3 9 logical array,Grand total is 27 elements using 153 bytes,例:, a=4,a =,4, A=reshape(1:9,3,3),A =,1 4 7,2 5 8,3 6 9, aA,ans,=,1 0 0,1 0 0,1 0 0,关系运算(续),4 4 4,4 4 4,4 4 4, whos,Name Size Bytes Class,A 3x3 72 double array,a 1x1 8 double array,ans,3x3 9 logical array,Grand total is 19 elements using 89 bytes,利用“()”和各种运算符相结合,可以完成复杂的关系运算,例:,A=reshape(-4:4,3,3),A =,-4 -1 2,-3 0 3,-2 1 4, A=0,ans,=,0 0 1,0 1 1,0 1 1, B =,(A=0),B =,1 1 0,1 0 0,1 0 0,关系运算(续), whos,Name Size Bytes Class,A 3x3 72 double array,B 3x3 9 logical array,ans,3x3 9 logical array,Grand total is 27 elements using 90 bytes,例:, C=(A0)&(A,A0,ans,=,0 0 1,0 0 1,0 1 1, A,A=,-2,10,NaN,30 0,-11 -,Inf,31,;, pos=AB=A(A B=A(pos),B =,-2 -11 -,Inf, pos=(A=0)&(,isfinite,(A),pos =,0 1 0 1 1 0 0 1, C=A(pos),C =,10 30 0 31,关系运算(续),3.3.4,运算符的优先级,(,1,)括号(),(,2,)数组转置(,.,),数组幂(,.,),矩阵转置(,),矩阵幂(,),(,3,)一元加(,+,),一元减(,-,),逻辑非(,),(,4,)数组乘法(,.*,),数组右除(,./,),数组左除(,.,),矩阵乘法(*),矩阵右除(,/,),矩阵左除(,),(,5,)加法(,+,),减法(,-,),(,6,)冒号运算符( :),(,7,)小于(,),小于等于(,),大于等于(,=,),等于(,=,),不等于(,=,),(,8,)元素与(,&,),(,9,)元素或(,|,),(,10,)短路逻辑与(,&,),(,11,)短路逻辑或(,|,),第三讲,3.1,概述,3.2,MATLAB,基本数值类型,3.3,逻辑类型和关系运算,3.4,字符串,3.5,元胞数组,3.6,结构,3.7,小结,3.4,字符串,字符串在数据的可视化、应用程序的交互方面起到非常重要的作用,创建字符串时需要使用,单引号,将字符串的内容包括起来,字符串一般以行向量形式存在,并且每一个字符占用两个字节的内存,主要内容,字符串入门,基本字符串操作,字符串操作函数,字符串转换函数,格式化输入输出,3.,4.1,字符串入门,创建字符串的方法,创建字符串时,只要将字符串的内容用,单引号,包括起来即可,例:,a=127,a =,127, class(a),ans,=,double, size(a),ans,=,1 1,b=127,b =,127, class(b),ans,=,char, size(b),ans,=,1 3,3.,4.1,字符串入门,若需要,在字符串内容中包含单引号,,则在键入字符串内容时,,连续键入两个单引号,即可,例:,C=,Isn,t it?,C =,Isn,t it?,字符串入门(续),使用,char,函数,创建一些无法通过键盘输入的字符,该函数的作用是将输入的整数参数转变为相应的字符, S1=char(This string array,has two rows.),S1 =,This string array,has two rows., S2=char(,这,字符,串数组,由,4,行组成,),S2 =,这,字符,串数组,由,4,行组成,3.4.2,基本字符串操作,字符串元素索引,字符串的拼接,字符串与数值之间的转换,1,、字符串元素索引,字符串实际上也是一种,MATLAB,的向量或者数组,一般利用索引操作数组的方法都可以用来操作字符串,例:,a=This is No.3-15 Example!,a =,This is No.3-15 Example!, b=a(1:4),b =,This, c=a(12:15),c =,3-15, d=a(17:end),d =,Example!,a=Hello MOTO!,a =,Hello MOTO!, b=a(end:-1:1),b =,!OTOM,olleH,2,、字符串的拼接,字符串可以利用“,”,运算符进行拼接,若使用“,”作为不同字符串之间的间隔,则相当于扩展字符串成为更长的字符串向量,若使用“;”作为不同字符串之间的间隔,则相当于扩展字符串成为二维或者多维的数组,这时,不同行上的字符串必须具有同样的长度,例:, a=Hello;, b=MOTO!;, length(a)=length(b),ans,=,1, c=a, ,b,c =,Hello MOTO!, d=a;b,d =,Hello,MOTO!,size(c),ans,=,1 11, size(d),ans,=,2 5, e=MOTO;, f=a;e,? Error using =,vertcat,All rows in the bracketed expression must have the same,number of columns.,3,、字符串和数值的转换,使用,char,函数可以将数值,(ASCII,码,),转变为字符,使用,double,函数可以将字符转变成数值,(ASCII,码,),例:, a=Hello MOTO!;, b=double(a),b =,72 101 108 108 111 32 77 79 84 79 33, c=,您好!,;,d=double(c),d =,50426 47811 41889, char(b),ans,=,Hello MOTO!, char(d),ans,=,您好!,3.4.3,字符串操作函数,函 数,说 明,char,创建字符串,将数值转变成为字符串,double,将,字符串转变成为,Unicode,数值,blanks,创建空白的字符串(由空格组成),deblank,将,字符串尾部的空格删除,ischar,判断变量是否是字符类型,strcat,水平组合字符串,构成更长的字符向量,strvcat,垂直组合字符串,构成字符串矩阵,strcmp,比较字符串,判断字符串是否一致,strncmp,比较字符串前,n,个字符,判断是否一致,strcmpi,比较字符串,比较时忽略字符的大小写,strncmpi,比较字符串前,n,个字符,比较时忽略字符的大小写,findstr,在较长的,字符串中查寻较短的字符串出现的索引,strfind,在,第一个字符串中查寻第二个字符串出现的索引,strjust,对齐排列字符串,strrep,替换字符串中的子串,strmatch,查询匹配的字符串,upper,将,字符串的字符都转变成为大写字符,lower,将字符串的字符都转变成为小写字符,字符串操作函数(续),例(,blanks,):, a=blanks(4),a =,字符串操作函数(续),例(,deblank,):, a=Hello! ,a =,Hello!,deblank,(a),ans,=,Hello!,whos,Name Size Bytes Class,a 1x9 18 char array,ans,1x6 12 char array,Grand total is 15 elements using 30 bytes,字符串操作函数(续),例(,ischar,):, a=Hello!,a =,Hello!,ischar,(a),ans,=,1, b=12;,ischar,(b),ans,=,0,变量为字符型,则结果为,1,变量不为字符型,则结果为,0,字符串操作函数(续),例:组合字符串,(,strcat,和,strvcat,), a=Hello;, b=MOTO!;, c=,strcat,(a,b),c =,HelloMOTO,!, d=,strvcat,(a,b ,c),d =,Hello,MOTO!,HelloMOTO,!,whos,Name Size Bytes Class,a 1x5 10 char array,b 1x5 10 char array,c 1x10 20 char array,d 3x10 60 char array,Grand total is 50 elements using 100 bytes,Strvcat,函数允许将不同长度的字符串组合成为字符矩阵,并且将短字符串扩充为与长字符串相同的长度,字符串操作函数(续),例:比较字符串(,strcmp,和,strncmp,), a=The first string;, b=The second string;, c=,strcmp,(a,b),c =,0, d=,strncmp,(a,b,4,),d =,1,字符串操作函数(续),例:查寻索引(,findstr,和,strfind,), S1=A friend in need is a friend indeed;, S2=friend;, a=,findstr,(S2,S1),a =,3 23, b=,strfind,(S2,S1),b =, c=,strfind,(S1,S2),c =,3 23,findstr,:,结果与参数先后位置无关,仅与字符串长度有关。,strfind,:,结果与参数先后位置有关。,字符串操作函数(续),例:对齐排列字符串(,strjust,), a=Hello;, b=MOTO!;, c=,strcat,(a,b),c =,HelloMOTO,!, d=,strvcat,(a,b,c),d =,Hello,MOTO!,HelloMOTO,!,e=,strjust,(d),e =,Hello,MOTO!,HelloMOTO,!,strjust,:,默认右对齐,相当于,strjust,(s,right),字符串操作函数(续),例:替换字符串中的子字符(,strrep,), S1=A,firend,in need is a,firend,indeed,S1 =,A,firend,in need is a,firend,indeed, S2=,strrep,(S1,firend,friend,),S2 =,A,friend,in need is a,friend,indeed,字符串操作函数(续),例:查寻匹配的字符串(,strmatch,),只对列元素, a=,strmatch,(max,strvcat,(max,minimax,maximum),a =,1,3, b=,strmatch,(max,strvcat,(max,minimax,maximum),exact,),b =,1,只,寻找以,max,开头的字符串,精确查寻:只寻找为,max,的字符串,字符串操作函数(续),例:改变字符串的字符的大小写(,upper,和,lower,), S1=friend;, S2=upper(S1),S2 =,FRIEND, S3=lower(S2),S3 =,friend,3.4.4,字符串转换函数,在,MATLAB,中,使用不同的函数可以允许不同类型的数据和字符串类型的数据之间进行转换,在,MATLAB,中,直接提供了相应的函数对同样类型的数据进行数制的转换,字符串转换函数(续),数字和字符之间的转换函数,函数,说明,num2str,将数字转变成为字符串,int2str,将整数转变成为字符串,mat2str,将,矩阵转变成为可被,eval,函数使用的字符串,str2double,将,字符串转变为双精度类型的数据,str2num,将,字符串转变为数字,sprinf,格式化输出数据到命令行窗口,sscanf,读取格式化字符串,字符串转换函数(续),不同数值之间的转换函数,(,续,),函数,说明,hex2num,将十六进制整数字符串转变成为双精度数据,hex2dec,将十六进制整数字符串转变成为十进制整数,dec2hex,将十进制整数转变成为十六进制整数字符串,bin2dec,将,二进制整数字符串转变成为十进制整数,dec2bin,将,十进制整数转变成为二进制整数字符串,base2dec,将,指定数制类型的数字字符串转变成为十进制整数,dec2base,将,十进制整数转变成为指定数制类型的数字字符串,字符串转换函数(续),函数,str2num,在,使用时需要注意:,被转换的字符串仅能包含数字、小数点、字符“,e”,或者“,d”,、,数字的正号或者负号、复数的虚部字符“,i”,或者“,j”,使用时要注意空格,例:,A=str2num(1+2i),A =,1.0000 + 2.0000i, B=str2num(1 +2i),B =,1.0000 0 + 2.0000i, C=str2num(1 + 2i),C =,1.0000 + 2.0000i,可以使用,str2double,函数避免上述问题,但,str2double,函数只能转换标量,不能转换矩阵或者数组, whos,Name Size Bytes Class,A 1x1 16 double array (complex),B 1x2 32 double array (complex),C 1x1 16 double array (complex),Grand total is 4 elements using 64 bytes,字符串转换函数(续),例:,S=1 2;2 3,S =,1 2,2 3, A=str2num(S),A =,1 2,2 3,whos,Name Size Bytes Class,A 2x2 32 double array,S 2x3 12 char array,Grand total is 10 elements using 44 bytes,字符串转换函数(续),使用函数,num2str,将数字转换成为字符串时,可以,指定,字符串所表示的,有效数字位数,例,A=num2str(,rand,(2,2),4,),A =,0.8913 0.4565,0.7621 0.0185, B=num2str(,rand,(2,2),6,),B =,0.921813 0.176266,0.738207 0.405706,字符串转换函数(续),其他的转换函数示例,a=255;, h=dec2hex(a),h =,FF, b=,dec2bin,(a),b =,11111111, c=dec2base(a,5),c =,2010, b(end)=0,b =,11111110,bin2dec,(b),ans,=,254,whos,Name Size Bytes Class,a 1x1 8 double array,ans,1x1 8 double array,b 1x8 16 char array,c 1x4 8 char array,h 1x2 4 char array,Grand total is 16 el
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!