MATLAB软件中的字符串符号
在MATLAB中,要建立一个字符串变量,可以这样写:S='字符串',即用' '将输入的字符串括起来,注意:不是'' '',这与一些其他的高级语言不同。要建立一个字符串矩阵,则可以这样输入:
SA=['string11' 'string12' …
'string21' 'string22' …
'stringn1' 'stringn2' …]
与数组不同,字符串矩阵的每一行字符串元素的个数可以不同,但是每一行的所有字符串中字符的总个数必须相同,如果不满足这个条件,即使每行中字符串的个数相同,也会出错。事实上,MATLAB将一个行内的所有字符串都合并起来,构成一个字符串,单个字符串之间不加空格,这正是每行中输入的字符串的个数可以不相同的根本原因,例如,下面一段程序:
>> SA=['hello';'world';'我是李某某']
SA =
hello
world
我是李某某
利用这个特点,可以用[ ]将任意字符串连接起来。
将上例中SA的上下两行连接起来,可以这样操作:
>> [SA(1,:)SA(2,:)SA(3,:)]
ans =
helloworld我是李某某
S='任意字符串',是一个由字符的ASCII码组成的向量,而实际所显示的是由给定的字体经过编码后的字符,而不是一些数码,变量S的长度便是字符串中的字符的个数。由于MATLAB中' '是标识字符串的特殊字符,因而要在字符串中输入' '必须通过2个' '来表示,而'' ''可以直接输入,例如,下面一段程序:
>> s='hello world'
s =
hello world
注意:MATLAB将字符串当作一个行向量,每个元素对应一个字符;也就是将字符串保存在一个行向量中,向量的每个元素对应一个字符。
>> size(s)
ans =
1 11
例2.24 用whos命令查看字符串属性。
>> whos
Name Size Bytes Class
SA 2x16 64 char
ans 1x2 16 double
area 1x1 8 double
c 1x10 20 char
d 1x18 36 char
s 1x11 22 char
>> class(s)
ans =
char
>> c='It''s a dog' %字符串内为两个',而不是''
c =
It's a dog
>> d='She said:"I am OK"' %字符串内为两个'',而不是两个'
d =
She said:"I am OK"
注意:MATLAB在处理字符串矩阵时是把它当作数据矩阵来处理的,字符串的每个字符都是矩阵的每个元素,这样字符串矩阵也应当满足数据矩阵的所有条件,即要求每行的元素个数必须相同,上下两行的字符总数必须相同。
字符串标识方法和数值向量或矩阵相同。也就是可以对元素进行提取或重新赋值的操作,例如,下面一段程序:
>> s1='My name is 李某某'
s1 =
My name is 李某某
>> s1(12)
ans =
李
>> s2=s1(end:-1:1)
s2 =
某某李 si eman yM
字符串及字符串矩阵可以进行加、减、乘、除四则运算和其他的数学运算。由于MATLAB是将字符串及字符串矩阵当作数据矩阵来处理的,因而在进行这些运算时,实际上是由字符串的各个字符的ASCII码组成的数据矩阵之间的数学运算。下面介绍一下字符串操作的函数。通常可以打印的字符的ASCII码在32~
>> 'a'+'b'
ans =
195
>> 'a'*'b'
ans =
9506
其中:
>> abs('a')
ans =
97
>> abs('b')
ans =
98