【MATLAB】MATLAB字符串处理
在MATLAB中有两种基本的数据类型,⼀个是数值型数据,⼀个是字符型数据(字符串数据)。数值型数据是指能参与数值运算的数。⼀、字符串的表⽰
1、在MATLAB中,字符串是⽤单引号括起来的字符序列。
在MATLAB中是把⼀个字符串当做⼀个⾏向量,这个⾏向量中每个元素对应⼀个字符,它的引⽤⽅法和数值向量是相同的 。xm(1:3)表⽰取这个⾏向量的第⼀到第三个元素,也就是取这个字符串的第⼀到第三个字符,结果为a b。
字符串比较函数实现
2、若字符串中的字符含有单引号,则该单引号字符要⽤两个单引号来表⽰。
3、建⽴多⾏字符串,形成字符串矩阵。
ch=[‘abcdef’;‘123456’]
变量ch有两⾏字符串,形成了⼀个两⾏的矩阵。因为是矩阵,所以各⾏字符数要相等,也就是列数要相同。因此,当各⾏字符数不相等时,就要⽤空格,来调节各⾏的长度,使它们的列数彼此相同。
ch(2,3)
引⽤矩阵ch的,第⼆⾏第三列的元素,也就是第⼆⾏字符串中第三个字符,所以,结果为字符3。
例题
建⽴⼀个字符串向量,然后对该向量做如下处理:
① 取第1~5个字符组成的⼦字符串。
② 将字符串倒过来重新排列。
③ 将字符串中的⼩写字母变成相应的⼤写字母,其余字符不变。
④ 统计字符串中⼩写字母的个数。
1、ch=‘ABc123d4e56Fg9’;
创建⼀个字符串赋给变量ch
2、第⼀问:① 取第1~5个字符组成的⼦字符串。
⼀个字符串就相当于⼀个⾏向量,每个元素就对应⼀个字符。
subch=ch(1:5)
取这个⾏向量的第⼀到五个元素。获得从第⼀到五个字符组成的⼦字符串,然后赋给subch变量。
3、第⼆问;② 将字符串倒过来重新排列。
可以使⽤向量处理⽅式
revch=ch(end: -1:1)
⽤了冒号表达式,冒号表达式的初始项是end,也就是最后⼀个字符,末项是第⼀个字符,步长为-1。表⽰从这个字符串的最后⼀个字符取起,⼀直到第⼀个字符。这样就实现了将字符串倒过来重新排列。
4、第三问:③ 将字符串中的⼩写字母变成相应的⼤写字母,其余字符不变。
要到字符串中有⼩写字母的位置。
k=find(ch>=‘a’&ch<=‘z’)
利⽤find函数到⼩写字母的位置,赋给k,k是⼀个向量,⾥⾯每⼀个元素,就是到的⼩写字母,在字符串向量ch中的序号。
同⼀个字母⼤⼩写ASCII码之间,差值是32。
ch(k)=ch(k)-(‘a’-‘A’)
ch(k)减去⼩写ASCII码与⼤写ASCII码差值,也就是32。这样就可以把⼩写字母变成相应的⼤写字母。
5、第四问:④ 统计字符串中⼩写字母的个数。
统计向量k元素的个数。因为k是到的所有⼩写字母的位置。
length(k)
利⽤length函数统计⼩写字母的个数,结果为4。
⼆、字符串的操作
1、字符串的执⾏
格式: eval(s)
参数s为字符串,它的做⽤是把参数字符串中的内容,作为对应的MATLAB命令来执⾏。
t=pi;
建⽴⼀个变量t,并赋值π
m=’[t,sin(t),cos(t)]’;
建⽴⼀个m向量,它的值是⼀个字符串
y=eval(m)
调⽤eval函数,m为参数,实际上是把参数字符串的内容作为对应的MATLAB命令来执⾏。所以最后是把⼀个向量,赋给变量y。
2、字符串与数值之间的转换
字符串是以ASCII码值的形式存储的。
abs和double函数都可以⽤来获取字符串矩阵所对应的ASCII码数值矩阵。
char函数可以把ASCII码矩阵转换为字符串矩阵。
s1=‘MATLAB’;
建⽴⼀个变量s1,值为字符串⼤写MATLAB
a=abs(s1)
调⽤abs函数,s1为参数。把s1变量中的字符串⼤写的MATLAB转换成对应的ASCII码数值的矩阵,结果赋给a,a为⼀个数值矩阵。例如第⼀个元素⼤写M的ASCII码值为77,第⼆个元素⼤写A的ASCII码值为65。
char(a+32)
调⽤char函数,aaaa+32为参数,这个参数是取得了⼩写matlab的ASCII码值。char函数是把ASCII码矩阵转换为对应的字符串矩阵,最后结果为matlab。
3、字符串的⽐较
字符串的⽐较有两种⽅法:利⽤关系运算符或字符串⽐较函数。
关系运算符⽐较:两个字符串⾥的每个字符依次按ASCII值⼤⼩逐个进⾏⽐较,⽐较的结果是⼀个数值向量,向量中的元素要么是1,要么是0。
‘www0’>=‘W123’
‘www0’是否⼤于等于’W123’,对两个字符串⾥的每个字符,依次从左往右,按ASCII码值⼤⼩逐⼀进
⾏⽐较。
⼩写w的ASCII⼤于⼤写W的ASCII码,关系成⽴,第⼀个元素结果为1。
⼩写w的ASCII⼤于的数字字符1的ASCII码,关系成⽴,第⼀个元素结果为1。
最终得到⼀个数值向量1110。
字符串⽐较函数⽤于判断字符串是否相等,有4种⽐较⽅式,函数如下:
strcmp(s1,s2):⽤来⽐较字符串s1和s2是否相等,如果相等,返回结果为1,否则返回0。
strncmp(s1,s2,n):⽤来⽐较两个字符串前n个字符是否相等,如果相等,返回1,否则返回0。
strcmpi(s1,s2):在忽略字母⼤⼩写前提下,⽐较字符串s1和s2是否相等,如果相等,返回1,否则返回0。
strncmpi(s1,s2,n):在忽略字符串⼤⼩写前提下,⽐较两个字符串前n个字符是否相等,如果相等,返回1,否则返回0。
4、字符串的查与替换
findstr(s1,s2):返回短字符串在长字符串中的开始位置。
strrep(s1,s2,s3):将字符串s1中的所有⼦字符串s2替换为字符串s3。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。