Matlab中字符串表示、字符串矩阵、字符串中的常用函数 | 您所在的位置:网站首页 › 函数声明用什么字母表示 › Matlab中字符串表示、字符串矩阵、字符串中的常用函数 |
字符串表示
类似于字符数组,不过Matlab中字符串是用单引号括起来的字符序列。也是以ASCII码形式存储。 >> str='LuYihang'; >> str(3:6) ans = 'Yiha'注意:若字符串中的字符含有单引号,则该单引号字符要用两个单引号来表示。 >> str2='LuYi''hang' str2 = 'LuYi'hang' 字符串矩阵也可以建立多行字符串,形成字符串矩阵。 >> ch=['a:f';'1:6'] ch = //可以看到字符串中相用a:f代替abcdef是不行的,a:f就是一个字符串 2×3 char 数组 'a:f' '1:6' >> ch(2,2) ans = ':'例题:建立一个字符串向量,然后对该向量做如下处理: 1 取第1~5个字符组成的子字符串。 2 将字符串倒过来重新排列。 3 将字符串中的小写字母变成相应的大写字母,其余字符不变。 4 统计字符串中小写字母的个数。 >> ch='ABc123d4e56FG90'; >> subch=ch(1:5) subch = 'ABc12' //题目1 >> revch=ch(end:-1:1) revch = '09GF65e4d321cBA' //题目2 >> k=find(ch>='a'&ch> ch(k)=ch(k)-32 ch = 'ABC123D4E56FG90' //题目3 支持ASCII码 >> length(k) ans = 3 //题目4 字符串操作1. 字符串的执行 格式: eval(s) s是字符串,作用是将字符串中的内容作为Matlab命令来执行,实现由键盘输入命令,而不是预先设置好命令,相比更灵活。 >> t=pi; >> m='[t,sin(t),cos(t)]'; >> m m = '[t,sin(t),cos(t)]' >> eval(m) ans = 3.1416 0.0000 -1.00002. 字符串与数值之间的转换 abs和 double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵。 char函数可以把ASCII码矩阵转换为字符串矩阵。 >> s1='MATLAB'; >> a=abs(s1) a = 77 65 84 76 65 66 >> b=char(a) b = 'MATLAB'3. 字符串的比较 字符串的比较有两种方法:利用关系运算符或字符串比较函数。 关系运算符比较:两个字符串里的每个字符依次按ASCII值大小逐个进行比较,比较的结果是一个数值向量,向量中的元素要么是1,要么是0。 >> 'www 0'>='W1234' ans = 1×5 logical 数组 1 1 1 0 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。 >> strncmpi('www0','W123',1) ans = logical 14. 字符串的查找与替换 strfind(s1,s2):返回字符串s2在字符串s1中的开始位置。 strrep(s1,s2,s3):将字符串s1中的所有子字符串s2替换为字符串s3。 注意还有个findstr(s1,s2)函数,区别在于findstr函数中s1 s2无先后顺序区别,返回短字符串在长字符串中的开始位置。 >> strfind('ababedabababedfg','bed') ans = 4 12 >> strfind('bed','ababedabababedfg') ans = [] >> findstr('bed','ababedabababedfg') ans = 4 12 >> strrep('ababedabababedfg','bed','toy') ans = 'abatoyababatoyfg' |
CopyRight 2018-2019 实验室设备网 版权所有 |