本节书摘来自异步社区《matlab r2012a超级学习手册》一书中的第2章,第2.4节,作者 史洁玉 , 孔玲军,更多章节内容可以访问云栖社区“异步社区”公众号查看
matlab r2012a超级学习手册
matlab能够很好地支持字符串数据,可以用两个不同的方式来表示字符串,即字符数组和字符串单元数组。
通常可以用m×n的字符数组来表示多个字符串,只要这些字符串的长度是一样。当需要保存多个不同长度的字符串时,可以用单元类型来实现。
matlab提供了很多字符串操作,包括字符串的创建、合并、比较、查找以及与数值之间的转换。下面介绍如何创建字符串的操作。
1.创建字符数组
可以用一对单引号来表示字符串,例如下面的示例代码。
也可以用字符串合并函数strcat()来得到一个新的字符串,例如下面的示例代码。
上述语句得到输出代码如下。
注意:
函数strcat()在合并字符串的同时会把字符串结尾的空格删除。要保留这些空格,可以用矩阵合并符[]来实现字符串合并,例如下面的示例代码。
利用函数char()来创建字符串。该函数创建字符串数组时,如果字符串不具有相同的长度,则函数char()自动用空格把字符串补足到最长的字符串的长度。例如下面的示例代码。
2.创建字符串单元数组
可以用函数cellstr()来创建字符串单元数组。例如,有一个字符数组如下。
下面语句的功能是把上述字符数组转换成为字符串单元数组,示例代码设置如下。
函数cellstr()已经把字符串尾部的空格截去。例如下列语句可以查看celldata的第一个字符串长度。
可以用函数char()把一个字符串单元数组转换成一个字符数组,示例代码设置如下。
其第一个字符串的长度可以得到如下的代码。
matlab里包括以下几种比较字符串和字符子串的方法。比较两个字符串或者两个字符串的子串是否相同。
比较两个字符串中的单独字符是否相同。
对字符串内的元素进行识别,判定每一个元素是字符还是空白符(包括空格、制表符tab和换行符)。
这些函数对字符数组和字符串数组都适用。
1.字符串比较函数
matlab提供的字符串比较函数如表2-18所示。

例如,有两个字符串如下。
由于这两个字符串不相同,故调用函数strsmp()的结果为0,语句如下。
这两个字符串的前5个字符是相同的,故用函数strncmp()比较它们的前5个字符,会返回1,代码设置如下。
2.用关系运算符比较字符串
可以对字符数组运用matlab7.0的关系运算符,但是要求比较的字符数组具有相同的维数,或者是其中一个是标量。例如,以下代码是用等号运算符(==)来判断两个字符串里哪些字符是相同的。
提示:
也可以用其他关系运算符(>、>=、<、<=、==、!=)来比较两个字符串。
matlab提供的一般字符串查找和替换函数如表2-19所示。
下面例子是实现字符串替换。
下面例子是用于实现字符串查找。
下面例子是用于获得第一个分隔符之前的字符串。
matlab提供的把数值转换为字符串的函数如表2-20所示。
matlab提供的把字符串转换为数值的函数如表2-21所示。
例如,要在命令行中输出一行字符串来显示向量x的最小值,使用代码如下。
其中,函数disp()是在命令行中显示一个字符串。由上述语句得到的结果如下。