写在前面:作者本人是纯纯的菜鸟,学习的内容来自于 中国大学MOOC 中南大学 《科学计算与MATLAB语言》,欢迎各位大佬或新手在这里和平讨论,如果我有错误请各位不吝赐教,提前感谢各位捧场!
MATLAB不仅仅处理数值数据,还会处理字符型数据(或者叫字符串数据)。
一、字符串的表示
何为字符型数据?在MATLAB中,字符串数据是用单引号括起来的字符序列。
1.建立一行字符串
str='hello';
%str就是一个字符串数据
str(1:3)
%字符串的引用类似于矩阵,一个字符串相当于一个行向量,每一个字符都占有一个位置
%例如,在上行命令中表示引用前三个字符
若字符串中包含一个单引号元素,则需要用两个单引号来表示
x='I''m good.'
%用两个单引号表示字符串中的一个单引号
2.建立多行字符串,行程字符串矩阵
使用要求:每行字符串长度都要相同,若不相同必须手动补齐空格,否则会报错
例题:建立一个字符串向量,然后做以下处理:
- 取出第1~5字符,组成一个新的字符串;
- 将字符串倒过来重新排列;
- 将字符串中的小写字母变成大写字母,其余不变;
- 统计该字符串中小写字母的个数
ch='aBCd1ji344GL'
%构造一个字符串
ch1=ch(1:5)
%第1题:取出前五个字符组成新的字符串
ch2=ch(end:-1:1)
%第2题:将字符串倒序排列,即从最后一位开始步长为-1排到第一个元素
k=find((ch>='a')&(ch<='z'))
%标记其中所有小写字母在字符串中的序号
ch(k)=ch(k)-('a'-'A')
%众所周知,小写字母的ASCⅡ比大写字母的大
%因此将小写字母转换为大写字母仅需减掉其中的差值32即可
%此时ch即为第3题所需的新字符串
length(k)
%第4题:统计小写字母的个数即统计k向量中元素的个数,即k的长度
二、字符串的操作
1.字符串的执行
eval(s)函数:将参数字符串中的内容作为对应的MATLAB命令来执行。
使用方法
t=pi;
m='[t sin(t) cos(t)]';
y=eval(m);
%所得结果为y是一个行向量,其中元素分别为pi,sin(pi),cos(pi)即pi,0,-1
2.字符串与数值之间的转换
字符串转换为ASCⅡ码值在第一节已经讲到过,使用abs()函数 或double()函数;
ASCⅡ码值转换为字符串则使用char()函数。
3.字符串比较
两种方法:关系运算符或字符串比较函数
比较规则:
(1)关系运算符比较:将两个字符串中的所有字符按照ASCⅡ码值逐个进行比较,得到一个与原字符串长度相同且仅含有0或1的行向量。例如:'Www1'>'wWW2'比较结果为0 1 1 0
(2)字符串比较函数:比较结果仅为0或1的数值
常用的字符串比较函数及其使用
strcmp(s1,s2)
%判断两字符串是否相等,相等则输出1,反之,输出0;
strncmp(s1,s2,n)
%判断两字符串前n个字符是否相等,相等则输出1,反之,输出0;
strcmpi(s1,s2)
%忽略大小写前提下,判断字符是否相等,相等则输出1,反之,输出0;
strncmpi(s1,s2,n)
%忽略大小写前提下,判断两字符串前n个字符是否相等,相等则输出1,反之,输出0;
例如:strcmp('www0','www1')输出结果为0
strncmpi('abcd','Ahj5',1)输出结果为1
4.字符串查找与替换
a.字符串查找
findstr(s1,s2)
%返回短字符在长字符中出现的开始位置
%注:s1和s2顺序没有影响,MATLAB会自动判断长短
%记忆方式:find string ->查找字符串
b.字符串替换
strrep(s1,s2,s3)
%将s1中所有的s2字符全部转换为s3
%记忆方式:string replace ->字符串替换(取代)
这就是今天的全部内容了,再次感谢各位耐心看到这里!