Matlab第三章-字符串

故事扮演 提交于 2020-03-17 11:02:23

第三章 字符串
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列单元中所允许存取的内容。两者的区别仅是用圆括号或是花括号

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!