MATLAB字符串的用法(非常详细,附带实例)
字符和字符串运算是各种高级语言必不可少的部分。MATLAB 作为一种高级的数字计算语言,同样具有丰富的字符和字符串运算功能。
特别是增加了符号运算工具箱(Symbolic toolbox)之后,MATLAB 的字符串函数的功能进一步得到增强。而且,现在的字符串运算已不再是简单的字符串运算,而是 MATLAB 符号运算表达式的基本构成单元。
在 MATLAB 中,字符串与字符数组基本上是等价的。可以用函数 size 来查看数组的维数。字符串的每个字符(包括空格)都是字符数组的一个元素。
【实例】利用单引号生成字符串示例。MATLAB 程序如下:
【实例】用 char() 函数来生成字符数组示例。MATLAB 程序如下:
【实例】用函数 char() 生成时间数组示例。在 MATLAB 命令行窗口中输入如下命令:
【实例】数字数组和字符串转换示例。MATLAB 程序如下:
【实例】字符串操作示例。MATLAB 程序如下:
特别是增加了符号运算工具箱(Symbolic toolbox)之后,MATLAB 的字符串函数的功能进一步得到增强。而且,现在的字符串运算已不再是简单的字符串运算,而是 MATLAB 符号运算表达式的基本构成单元。
MATLAB字符串的生成
1) 直接赋值生成
在 MATLAB 中,所有的字符串都使用单引号设定后输入或赋值(input() 函数除外)。在 MATLAB 中,字符串与字符数组基本上是等价的。可以用函数 size 来查看数组的维数。字符串的每个字符(包括空格)都是字符数组的一个元素。
【实例】利用单引号生成字符串示例。MATLAB 程序如下:
>> close all % 关闭当前已打开的文件 >> clear % 清除工作区的变量 >> s='MATLAB 2020 Functions' % 将字符串赋值给数组s s = 'MATLAB 2020 Functions' >> size(s) % 查看s相应维度的长度 ans = 1 21 >> s(13) % 查看s的第13个元素 ans = 'F'
2) 由char()函数生成字符数组
在 MALTAB 中,可以使用函数 char() 直接生成字符串数组。【实例】用 char() 函数来生成字符数组示例。MATLAB 程序如下:
>> close all % 关闭当前已打开的文件 >> clear % 清除工作区的变量 >> s=char('s','y','m','b','l','i','c') % 使用函数char生成字符数组 s = 7×1 char 数组 's' 'y' 'm' 'b' 'l' 'i' 'c' >> s' % 将数组转置 ans = 'symblic'
【实例】用函数 char() 生成时间数组示例。在 MATLAB 命令行窗口中输入如下命令:
>> close all % 关闭当前已打开的文件 >> clear % 清除工作区的变量 %{用指定值的小时、分钟和秒数组创建1行3列的持续时间数组,以固定长度为单位表示经过的时间%} >> D = hours(23:25) + minutes(8) + seconds(1.2345) D = 1×3 duration 数组 23.134小时 24.134小时 25.134小时 >> C = char(D) % 用函数char将时间数组D转换成字符数组 C = 3×8 char 数组 '23.134小时' '24.134小时' '25.134小时'
MATLAB数值数组和字符串之间的转换
数值数组和字符串之间的转换,可由下表中的函数实现。函数名 | 说明 | 函数名 | 说明 |
---|---|---|---|
num2str() | 数字转换成字符串 | str2num() | 字符串转换为数字 |
in2str() | 整数转换成字符串 | sprintf() | 将格式数据写成字符串 |
mat2str() | 矩阵转换成字符串 | sscanf() | 在格式控制下读字符串 |
【实例】数字数组和字符串转换示例。MATLAB 程序如下:
>> close all % 关闭当前已打开的文件 >> clear % 清除工作区的变量 >> x=[1:5] % 创建一个数字数组x x = 1 2 3 4 5 >> y=num2str(x) % 将数字数组x转换为字符串 y = '1 2 3 4 5' >> x*2 % 将数值数组中的各元素乘以2 ans = 2 4 6 8 10 % 将y中的每个字符(包括空格)转换为对应的数值,与2相乘。相邻的两个元素之间有两个空格 >> y*2 ans = 1 至 11 列 98 64 64 100 64 64 102 64 64 104 64 12 至 13 列 64 106注意,数值数组转换成字符数组后,虽然表面上形式相同,但它此时的元素是字符而非数字,因此要使字符数组能够进行数值计算,应先将它转换成数值数组。
MATLAB字符串操作
MATLAB 对字符的串操作与 C语言完全相同,如下表所示:函数名 | 说明 | 函数名 | 说明 |
---|---|---|---|
strcat() | 水平串联字符串 | strrep() | 以其他串代替此串 |
strvcat() | 垂直链接串 | strtok() | 寻找串中记号 |
strcmp() | 比较串 | upper() | 转换串为大写 |
strncmp() | 比较串的前 n 个字符 | lower() | 转换串为小写 |
findstr() | 在其他串中找此串 | blanks() | 生成空串 |
strjust() | 证明字符数组 | deblank() | 移去串内空格 |
【实例】字符串操作示例。MATLAB 程序如下:
>> close all % 关闭当前已打开的文件 >> clear % 清除工作区的变量 >> s1 = 'Good '; % 创建字符串s1 >> s2 = 'Morning'; % 创建字符串s2 >> s = [s1 s2] % 创建矩阵s s = 'Good Morning' >> strcat(s1,s2) % 将两个字符串水平串联成一个字符串 ans = 'GoodMorning' >> strvcat(s1,s2) % 将两个字符串垂直链接 ans = 2×7 char 数组 'Good ' 'Morning' % 将第一个参数字符串“Morning”中出现的所有“Morning”都替换为“Evening” >> s2=strrep('Morning','Morning', 'Evening ') s2 = 'Evening ' >> strcat(s1,s2) % 将两个字符串水平串联成一个字符串 ans = 'GoodEvening' >> lower(s1) % 将字符串s1中的字符转换为小写 ans = 'good '