字符串数组、元胞数组 和构架数组
字符串数组、元胞数组 和构架数组
本讲提纲 UNIVE ●字符串数组 ●元胞数组 ●构架数组 中国民航大学电子信息工程学院
中 国 民 航 大 学 电 子 信 息 工 程 学 院 本讲提纲 ⚫字符串数组 ⚫元胞数组 ⚫构架数组
字符串数组 UNIVE 字符串 在 MATLAB中,字符串是用单撇号括起来的字 符序列。 MATLAB将字符串当作一个行向量,每个元素 对应一个字符,其标识方法和数值向量相同。也可 以建立多行字符串数组。 MATLAB存放一个字符需2个字节,而存放一个 数值标量需8个字节。 例]字符串和数值量的区别 a=123.55; b=class(a); a s-size(a) c= S; d=class(c); c s-size(c) 中国民航大学电子信息工程学院
中 国 民 航 大 学 电 子 信 息 工 程 学 院 字符串数组 ⚫ 字符串 在MATLAB中,字符串是用单撇号括起来的字 符序列。 MATLAB将字符串当作一个行向量,每个元素 对应一个字符,其标识方法和数值向量相同。也可 以建立多行字符串数组。 MATLAB存放一个字符需2个字节,而存放一个 数值标量需8个字节。 [例]字符串和数值量的区别 a=123.55; b=class(a);a_s=size(a) c=‘S’;d=class(c);c_s=size(c)
字符串数组 UNIVE ●字符串数组的创建 >单撇号法 a=‘ Matlab language 每个字符(中文英文字母,空格和标点符号)占据 个元素位。 size(a)=1*16 串数组元素的标识 串数组每个字符对应一个串数组的索引位 a(2)=a b=‘中国民航大学 中国民航大学电子信息工程学院
中 国 民 航 大 学 电 子 信 息 工 程 学 院 字符串数组 ⚫ 字符串数组的创建 ➢ 单撇号法 a=‘Matlab language.’ 每个字符(中文英文字母,空格和标点符号)占据一 个元素位。 size(a)=1*16 串数组元素的标识 串数组每个字符对应一个串数组的索引位 a(2)=a b=‘中国民航大学’
字符串数组 UNIVE S=TThis string array "Has multiple rows.'I 注意:用单撇号创建多行数组时,要保证各行等长。(可利 用空格来调整各行的长度相同) >利用串操作函数创建多行串数组 char char( This string array,’ has two rows’) streat str2mat(“中国’,‘民航大学 streat streat中国,“,“民航大学) 利用这三条指令创建串数组时,不需保证每行字符数相同, Matlab会按最长行设置第二维的长度。 中国民航大学电子信息工程学院
中 国 民 航 大 学 电 子 信 息 工 程 学 院 字符串数组 S=[‘This string array ’ ‘Has multiple rows.’] 注意:用单撇号创建多行数组时,要保证各行等长。(可利 用空格来调整各行的长度相同) ➢利用串操作函数创建多行串数组 ✓char char(‘This string array’,’has two rows’) ✓str2mat str2mat(‘中国’,‘民航大学’) ✓strvcat strvcat(‘中国’,‘’,‘民航大学’) 利用这三条指令创建串数组时,不需保证每行字符数相同, Matlab会按最长行设置第二维的长度
字符串数组 UNIVE ●字符串数组的存储 字符串是以ASCⅢ码形式存储的。abs和 double函数都可以 用来获取字符串矩阵所对应的ASCⅢ码数值矩阵。相反, char函数可以把ASCⅢ码矩阵转换为字符串矩阵。 B a=civil aviation university of china b=double(a) =char(b) 说明:由于ACS码数组是数值数组,因此第二章所 讲的各种运算、函数和操作对ASCI码数组都适用 中国民航大学电子信息工程学院
中 国 民 航 大 学 电 子 信 息 工 程 学 院 字符串数组 ⚫ 字符串数组的存储 字符串是以ASCII码形式存储的。abs和double函数都可以 用来获取字符串矩阵所对应的ASCII码数值矩阵。相反, char函数可以把ASCII码矩阵转换为字符串矩阵。 例 a=‘civil aviation university of china’ b=double(a) c=char(b) 说明:由于ACSII码数组是数值数组,因此第二章所 讲的各种运算、函数和操作对ASCII码数组都适用
字符串数组 UNIVE 例:使字符串数组全部小写 a= This is an example’ ascii a=double(a) w=find(a>=‘a,&a<=z) ascii a(w =ascii a(w)-32 char(ascii a) 中国民航大学电子信息工程学院
中 国 民 航 大 学 电 子 信 息 工 程 学 院 字符串数组 例:使字符串数组全部小写 a=‘This is an example’ ascii_a=double(a) w=find(a>=‘a’&a<=‘z’) ascii_a(w)=ascii_a(w)-32 char(ascii_a)
字符串数组 UNIVE 例:建立一个字符串向量,然后对该向 量做如下处理: (1)取第1~5个字符组成的子字符串。 (2)将字符串倒过来重新排列 (3)将字符串中的小写字母变成相应的大 写字母,其余字符不变。 (4)统计字符串中小写字母的个数 中国民航大学电子信息工程学院
中 国 民 航 大 学 电 子 信 息 工 程 学 院 字符串数组 例:建立一个字符串向量,然后对该向 量做如下处理: (1) 取第1~5个字符组成的子字符串。 (2) 将字符串倒过来重新排列。 (3) 将字符串中的小写字母变成相应的大 写字母,其余字符不变。 (4) 统计字符串中小写字母的个数
字符串数组 UNIVE 命令如下: ch='ABcl23d4e56Fgg subc=ch(1: 5) %取子字符串 reich=ch(end:-1:1)%将字符串倒排 find(ch>=a&ch<=z); 找小写字母的位置 ch(k)=ch(k)-(a-A’);%将小写字母变成相 应的大写字母 char(ch) length(k) %统计小写字母的个数 中国民航大学电子信息工程学院
中 国 民 航 大 学 电 子 信 息 工 程 学 院 字符串数组 命令如下: ch=‘ABc123d4e56Fg9’; subch=ch(1:5) %取子字符串 revch=ch(end:-1:1) %将字符串倒排 k=find(ch>=‘a’&ch<=‘z’); %找小写字母的位置 ch(k)=ch(k)-(‘a’-‘A’); %将小写字母变成相 应的大写字母 char(ch) length(k) %统计小写字母的个数
字符串数组 UNIVER ●串转换函数 int2str, num2str, mat2str 把数值数组转换成字符串数组 int2str%把整数数组转换成字符丰数组(非整数四舍五入) 例A=0nes(2,4);C=rand(2,3); B=int2str(A); D=int2str(c); num2str%把非整数数组转换成字符串数组(图形中数据 点的标识) 例A=rand(2,3); B=num2str(A,3);%保持3位有效数字 中国民航大学电子信息工程学院
中 国 民 航 大 学 电 子 信 息 工 程 学 院 字符串数组 ⚫串转换函数 ➢ int2str,num2str,mat2str 把数值数组转换成字符串数组 int2str %把整数数组转换成字符串数组(非整数四舍五入) 例 A=ones(2,4); C=rand(2,3); B=int2str(A); D=int2str(c); num2str %把非整数数组转换成字符串数组(图形中数据 点的标识) 例 A=rand(2,3); B=num2str(A,3); %保持3位有效数字