首页 > 编程笔记 > MATLAB笔记 阅读:70

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 '

相关文章