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 '
ICP备案:
公安联网备案: