《MATLAB R2012a超级学习手册》一2.4 字符串处理函数

简介:

本节书摘来自异步社区《MATLAB R2012a超级学习手册》一书中的第2章,第2.4节,作者 史洁玉 , 孔玲军,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.4 字符串处理函数

MATLAB R2012a超级学习手册
MATLAB能够很好地支持字符串数据,可以用两个不同的方式来表示字符串,即字符数组和字符串单元数组。

2.4.1 字符串的构造

通常可以用m×n的字符数组来表示多个字符串,只要这些字符串的长度是一样。当需要保存多个不同长度的字符串时,可以用单元类型来实现。

MATLAB提供了很多字符串操作,包括字符串的创建、合并、比较、查找以及与数值之间的转换。下面介绍如何创建字符串的操作。

1.创建字符数组
可以用一对单引号来表示字符串,例如下面的示例代码。

>>str='helloMATLAB2012'
str =
  helloMATLAB2012

也可以用字符串合并函数strcat()来得到一个新的字符串,例如下面的示例代码。

>>a='hello';
>>b='MATLAB2012';
>>c=strcat(a,b)

上述语句得到输出代码如下。

c=
   helloMATLAB2012

注意:
函数strcat()在合并字符串的同时会把字符串结尾的空格删除。要保留这些空格,可以用矩阵合并符[]来实现字符串合并,例如下面的示例代码。

>>a='hello';
>>b='MATLAB 2012';
>>c=[a b]

上述语句得到输出代码如下。

c=
  hello MATLAB 2012

利用函数char()来创建字符串。该函数创建字符串数组时,如果字符串不具有相同的长度,则函数char()自动用空格把字符串补足到最长的字符串的长度。例如下面的示例代码。

>>c=char('hello','MATLAB2012')

上述语句得到输出代码如下。

c=
   hello
   MATLAB2012

2.创建字符串单元数组
可以用函数cellstr()来创建字符串单元数组。例如,有一个字符数组如下。

>>data=['hello';'MATLAB2012']

上述语句得到输出代码如下。

data=
  hello
  MATLAB2012

下面语句的功能是把上述字符数组转换成为字符串单元数组,示例代码设置如下。

>>celldata=cellstr(data)

上述语句得到输出代码如下。

celldata=
   'hello'
   'MATLAB2012'

注意:
函数cellstr()已经把字符串尾部的空格截去。例如下列语句可以查看celldata的第一个字符串长度。

>>length(celldata{1})

上述语句得到输出代码如下。

ans=
   5

可以用函数char()把一个字符串单元数组转换成一个字符数组,示例代码设置如下。

>>chararray=char(celldata)

上述语句得到输出代码如下。

chararray=
   hello
   MATLAB2012

其第一个字符串的长度可以得到如下的代码。

>>length(chararray(1,:))

上述语句得到输出代码如下。

ans=
   11

2.4.2 字符串比较函数

MATLAB里包括以下几种比较字符串和字符子串的方法。比较两个字符串或者两个字符串的子串是否相同。

比较两个字符串中的单独字符是否相同。
对字符串内的元素进行识别,判定每一个元素是字符还是空白符(包括空格、制表符Tab和换行符)。
这些函数对字符数组和字符串数组都适用。

1.字符串比较函数
MATLAB提供的字符串比较函数如表2-18所示。

image

例如,有两个字符串如下。

>>str1='aaabbb';
>>str2='aaabbc';

由于这两个字符串不相同,故调用函数strsmp()的结果为0,语句如下。

>>c=strcmp(str1,str2)

上述语句得到输出代码如下。

c=
   0

这两个字符串的前5个字符是相同的,故用函数strncmp()比较它们的前5个字符,会返回1,代码设置如下。

>>c=strncmp(str1,str2,5)

上述语句得到输出代码如下。

c=
   1

2.用关系运算符比较字符串
可以对字符数组运用MATLAB7.0的关系运算符,但是要求比较的字符数组具有相同的维数,或者是其中一个是标量。例如,以下代码是用等号运算符(==)来判断两个字符串里哪些字符是相同的。

>>str1='aabbcc';
>>str2='abbabc';
>>c=str1==str2

上述语句得到输出代码如下。

c =
   1   0   1   0   0   1

提示:
也可以用其他关系运算符(>、>=、<、<=、==、!=)来比较两个字符串。

2.4.3 字符串查找和替换函数

MATLAB提供的一般字符串查找和替换函数如表2-19所示。

image

下面例子是实现字符串替换。

>>s1='I am a teacher.';
>>str=strrep(s1,'teacher','student')

上述语句得到输出代码如下。

str=
I am a student.

下面例子是用于实现字符串查找。

>>str='I am a teacher.';
>>index=strfind(str,'e')

上述语句得到输出代码如下。

index =
   9  13

下面例子是用于获得第一个分隔符之前的字符串。

>>s='I am a teacher.';
>>[a,b]=strtok(s)

上述语句得到输出代码如下。

a=
   I
b=
   am a teacher.

2.4.4 字符串与数值的转换

MATLAB提供的把数值转换为字符串的函数如表2-20所示。

image

MATLAB提供的把字符串转换为数值的函数如表2-21所示。

image

例如,要在命令行中输出一行字符串来显示向量x的最小值,使用代码如下。

>>x=rand(1,5)
>>disp(['向量x中的最小值为:'num2str((min(x)))]);

其中,函数disp()是在命令行中显示一个字符串。由上述语句得到的结果如下。

x=
   0.1419 0.4218 0.9157 0.7922 0.9595


向量x中的最小值为0.1419
相关文章
|
23天前
OFDM深入学习及MATLAB仿真(二)
OFDM深入学习及MATLAB仿真
22 1
|
1月前
|
索引
matlab--------矩阵重构,重新排列的相关函数说明
matlab--------矩阵重构,重新排列的相关函数说明
38 0
matlab--------矩阵重构,重新排列的相关函数说明
|
1月前
|
索引
matlab日常学习-------矩阵
matlab日常学习-------矩阵
23 0
|
23天前
雷达模糊函数及MATLAB仿真(三)
雷达模糊函数及MATLAB仿真
15 0
|
23天前
雷达模糊函数及MATLAB仿真(一)
雷达模糊函数及MATLAB仿真
25 0
|
1月前
|
算法
【数学建模竞赛】Matlab逻辑规则,结构基础及函数
【数学建模竞赛】Matlab逻辑规则,结构基础及函数
26 0
|
2月前
|
机器学习/深度学习 算法
基于自适应支持向量机的matlab建模与仿真,不使用matlab的SVM工具箱函数
基于自适应支持向量机的matlab建模与仿真,不使用matlab的SVM工具箱函数
|
3月前
|
机器学习/深度学习 存储
【Matlab智能算法】极限学习机-遗传算法(ELM-GA)函数极值寻优——非线性函数求极值
【Matlab智能算法】极限学习机-遗传算法(ELM-GA)函数极值寻优——非线性函数求极值
|
3月前
|
机器学习/深度学习 存储
【Matlab智能算法】Elman神经网络-遗传算法(Elman-GA)函数极值寻优——非线性函数求极值
【Matlab智能算法】Elman神经网络-遗传算法(Elman-GA)函数极值寻优——非线性函数求极值
|
3月前
|
机器学习/深度学习 存储
【Matlab智能算法】RBF神经网络-遗传算法(RBF-GA)函数极值寻优——非线性函数求极值
【Matlab智能算法】RBF神经网络-遗传算法(RBF-GA)函数极值寻优——非线性函数求极值

热门文章

最新文章