第三章 字符串
3.1 字符串数组的创建
1.直接输入法
2.利用ASCII码
3.使用函数
【例3-1】直接输入法
>> a = 'hello'
a =
hello
>> b = '''你好'''
b =
'你好'
>> c = [a,'',b,'.']#字符串数组(一个数组,里面是字符串)
c =
hello'你好'.
注意:
1.当字符串文字中包含单引号时,每个单引号符号需要使用2个连续的单引号字符(与python中的双引号区别开)
2.字符串是特殊的ASCII数值型数组,而显示出来的是字符形式。
【例3-2】利用ASCII码
>> b = '你好';
>> ASCIIb = double(b);
>> c = char(ASCIIb);
>> b
b =
你好
>> ASCIIb
ASCIIb =
20320 22909
>> c
c =
你好
【例3-3】使用函数
相关函数:char(),str2mat(),strvcat()
字符串纵向排列,且不需要注意每个字符串变量的长度是否相等。
>> c1 = char('China Dalian','ccit')
c1 =
China Dalian
ccit
>> c2 = str2mat('China','Dalian','','ccit')
c2 =
China
Dalian
ccit
>> a1 = 'auto';
>> a2 = 'film';
>> a3 = 'forest';
>> a4 = 'city';
>> b1 = strvcat(a1,a4);
>> b2 = strvcat(a2,a4);
>> b3 = strvcat(a3,a4);
>> b1
b1 =
auto
city
>> b2
b2 =
film
city
>> b3
b3 =
forest
city
同时,Matlab中提供横向连接字符串的函数:strcat()
【例3-4】
>> a1 = 'auto';
>> a2 = 'city';
>> b1 = strcat(a1,a2)
b1 =
autocity
注意:函数strcat()在合并字符串的同时会把每个字符串结尾的所有空格删除
3.2 数值与字符串的相互转换
1.数值转换为字符串:int2str(),num2str(),mat2str()(整数、数值、矩阵)
【例3-5】
>> A1 = int2str(eye(4))
A1 =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
>> size(A1)
ans =
4 10 #结果为字符型矩阵,4行10列,说明数字之间的空格也算,即空格已变为字符
>> A2 = num2str(rand(3))
A2 =
0.81472 0.91338 0.2785
0.90579 0.63236 0.54688
0.12699 0.09754 0.95751
>> size(A2)
ans =
3 31 #与上述同理,原先的数值已经变为字符串
#num2str比int2str适用范围广
>> A3 = mat2str(pi/2*eye(2))
A3 =
[1.5707963267949 0;0 1.5707963267949]#注意中间是分号
>> size(A3)
ans =
1 37
2.字符串转换为数值:str2num(),str2double()
【例3-6】
>> s = num2str(log(3)*eye(3))
s =
1.0986 0 0
0 1.0986 0
0 0 1.0986
>> ischar(s) #判定s是否为字符串数组
ans =
1
>> n = str2num(s)
n =
1.0986 0 0
0 1.0986 0
0 0 1.0986
>> isnumeric(n) #判定n是否为数值数组
ans =
1
>> isfloat(n) #判定n是否为浮点数值数组
ans =
1
3.3 字符串函数
1.ischar():判断括号内的值是否为一个字符串数组
2.findstr():用于查找位置
【例3-7】
>> S = 'Find another string in a longer string.';
>> result = findstr(S,'longer') #查找'longer'的位置
result =
26 #返回被查找字符串的起始位置
>> result2 = findstr(S,'a') #查找'a'的位置
result2 =
6 24 #有两个a,返回两个值
>> result3 = findstr(S,'b')
result3 =
[] #S中没有'b',所以返回值为空
3.upper():将括号内字符串中的小写字母转为大写字母
4.lower():将括号内字符串中的大写字母转为小写字母
3.4 单元数组(元胞数组)
定义:
单元数组(Cell Array),基本结构是单元,每个元素都是一个单元,单元中可以包含任何类型、大小的数组,而且同一单元数组内各单元的内容可以不同,其维数不受限制,可以是一维、二维或多维。
3.4.1 单元数组的创建:
1.利用赋值语句
2.利用单元数组法
3.利用函数cell
【例3-8】利用赋值语句(两种形式)
第一种:
>> A(1,1) = {'Matlab'};
>> A(1,2) = {'7.0'};
>> A(2,1) = {'矩阵'};
>> A(2,2) = {[1 2 3;4 5 6;7 8 9]};
>> A
A =
'Matlab' '7.0'
'矩阵' [3x3 double]
第二种:
>> A{1,1} = 'Matlab';
>> A{1,2} = '7.0';
>> A{2,1} = '矩阵';
>> A{2,2} = [1 2 3;4 5 6;7 8 9];
>> A
A =
'Matlab' '7.0'
'矩阵' [3x3 double]
【例3-9】利用单元数组法
>> A = {'Matlab','7.0';'矩阵',[1 2 3;4 5 6;7 8 9]}
A =
'Matlab' '7.0'
'矩阵' [3x3 double]
【例3-10】利用函数cell
>> C = cell(3)
C =
[] [] []
[] [] []
[] [] []
>> C(1,1) = {'The Great Wall'}
C =
'The Great Wall' [] []
[] [] []
[] [] []
>> C(1,2) = {'The Summer Palace'}
C =
'The Great Wall' 'The Summer Palace' []
[] [] []
[] [] []
>> C(2,1) = {[1 2;2 1]}
C =
'The Great Wall' 'The Summer Palace' []
[2x2 double] [] []
[] [] []
>> C(3,2) = {'celldisp'}
C =
'The Great Wall' 'The Summer Palace' []
[2x2 double] [] []
[] 'celldisp' []
补充:
1.cell(n):建立nn单元数组,单元是空矩阵;cell(m,n)或cell([m,n]):建立mn单元数组,单元是空矩阵
2.事实上,cell函数建立单元数组,是先用cell生成一个空的单元数组,然后再向其中添加所需的数据
3.4.2 单元数组的查看函数
函数:celldisp(),cellplot()
【例3-11】
>> A(1,1) = {[3 2 0;6 3 9;5 5 5]};
>> A(1,2) = {1 + i};
>> A(2,1) = {'cellarray'};
>> A(2,2) = {-3:6};
>> A
A =
[3x3 double] [1.0000 + 1.0000i]
'cellarray' [1x10 double]
>> celldisp(A)
A{1,1} =
3 2 0
6 3 9
5 5 5
A{2,1} =
cellarray
A{1,2} =
1.0000 + 1.0000i
A{2,2} =
Columns 1 through 9
-3 -2 -1 0 1 2 3 4 5
Column 10
6
>>cellplot(A)
由上图可见,cellplot命令用大白方格表示各个单元,小方格表示单元内容,色彩表示数据类型
注意:
单元和单元里的内容是两个完全不同的范畴;寻访单元和寻访单元内容是两种不同的操作(例:A(4,2)是单元数组A中的第四行第二列单元元素;A{4,2}是指单元数组A中的第4行第2列单元中所允许存取的内容。两者的区别仅是用圆括号或是花括号)
来源:CSDN
作者:weixin_44722692
链接:https://blog.csdn.net/weixin_44722692/article/details/104897529