Matlab字符串
在实际应用中,有两种基本的数据类型,一个是数值型数据,一个是字符型数据或称字符串数据。
数值型数据是指能参与数值运算的数据,又分为整型、浮点型和复数型。
字符型数据在日常应用中则不太强调,但却是大量存在的。
一、字符串的表示
在MATLAB中,字符串是用单引号括起来的字符序列。若字符串中的字符含有单引号,则该单引号字符要用两个单引号来表示。例如:
>> 'I''m a teacher.'
ans =
I'm a teacher.
MATLAB 将一个字符串当作一个行向量,每个元素对应一个字符,其引用方法和数值向量相同。例如:
>>A='ABCDEF';
>>A(1:3)
ans =
ABC
也可以建立多行字符串,形成字符串矩阵。例如:
>> ch=['abcdef';'123456'];
>> ch(2,3)
ans =
3
这里要求各行字符数要相等。为此,有时不得不用空格来调节各行的长度,使它们彼此相等。
例1 建立一个字符串向量,然后对该向量做如下处理。
(1)取第1~5个字符组成的子字符串。
(2)将字符串倒过来重新排列。
(3)将字符串中的小写字母变成相应的大写字母,其余字符不变。
(4)统计字符串中小写字母的个数。
>> ch='ABc123d4e56Fg9'
ch =
ABc123d4e56Fg9
>> subch=ch(1:5)
subch =
ABc12
>> revch=ch(end:-1:1)
revch =
9gF65e4d321cBA
>> k=find(ch>='a'&ch<='z')
k =
3 7 9 13
>> ch(k)=ch(k)-('a'-'A')
ch =
ABC123D4E56FG9
>> length(k)
ans =
4
二、字符串的操作
1.字符串的执行
与字符串有关的一个重要函数是 eval, 它的作用是把字符串的内容作为对应的 MATLAB命令来执行,其调用格式如下:
eval(s),
其中s 为字符串。
>> t=pi;
>> m='[t,sin(t),cos(t)]';
>> y=eval(m)
y =
3.1416 0.0000 -1.0000
2.字符串与数值之间的转换
字符串是以ASCII 码形式存储的, abs 和 double 函数都可以用来获取字符串矩阵所对应的 ASCII 码数值矩阵。相反, char 函数可以把ASCII 码矩阵转换为字符串矩阵。
>> s1='MATLAB';
>> a=abs(s1)
a =
77 65 84 76 65 66
>> char(a+32)
ans =
matlab
MATLAB 还有许多用于字符串和数值数据之间转换的函数
-
setstr 函数将ASCII码值转换成对应的字符
-
str2num 函数或 str2double 函数将数字字符串转换成数值
-
num2str 函数将数值转换成字符串
-
int2str 函数将整数转换成字符串
3.字符串的连接
在 MATLAB 中,要将两个字符串连接在一起,有两种常见方法: 一是用字符串向量,二是用strcat 函数。
用字符串向量可以将若干个字符串连接起来,即用中括号将若干个字符串括起来,从而得到 一个更长的字符串。
>> f=70;
>> c=(f-32)/1.8;
>> ['Room temperature is ',num2str(c),' degrees C.']
ans =
Room temperature is 21.1111 degrees C.
strcat函数可以将若干个字符串连接起来。
>> strcat('ss','ff','DD','1234')
ans =
ssffDD1234
4.字符串的比较
字符串的比较有两种方法:利用关系运算符或字符串比较函数。
当两个字符串拥有相同的长度时,可以利用关系运算符对字符串进行比较,比较的规则是按ASCII 值大小逐个字符进行比较,比较的结果是一个数值向量,其元素为对应字符比较的结果。
>> 'www0'>='W123'
ans =
1 1 1 0
字符串比较函数用于判断字符串是否相等,有4种比较方式,函数如下。
(1)strcmp(s1,s2): 用来比较字符串s1和s2是否相等,如果相等,返回1,否则返回0。
(2)strncmp(s1,s2,n): 用来比较前n个字符是否相等,如果相等,返回1,否则返回0。
(3)strcmpi(s1,s2): 在忽略字母大小写前提下,比较字符串s1 和 s2 是否相等,如果相等, 返回1,否则返回0。
(4)strncmpi(s1,s2,n): 在忽略字符串大小写前提下,比较前n 个字符是否相等,如果相等, 返回1,否则返回0。
>> strcmp('wwwO','W123')
ans =
0
>> strncmpi('wwwO','W123',1)
ans =
1
5.字符串的查找与替换
MATLAB 提供了许多函数,用来对字符串中的字符进行查找与替换。常用的有以下两个。
(1)findstr(s1,s2): 返回短字符串在长字符串中的开始位置。
>> p=findstr('This is a test!','is')
p =
3 6
(2)strrep(s1,s2,s3): 将字符串s1 中的所有子字符串s2 替换为字符串s3。
>> result =strrep('This is a test!','test','class')
result =
This is a class!
Matlab学习笔记内容来源于《MATLAB程序设计与应用 第三版》刘卫国主编