
7.1 字符串的创建
一个MATLAB字符串是一个char型数组,每个字符占2字节。当字符串被赋予一个变量时,这个变量将被自动创建为字符变量。
7.1.1 创建字符数组
可以用一对单引号来表示字符串,具体示例如下:

也可以用字符串合并函数strcat()来得到一个新的字符串,具体示例如下:

运行结果如下:

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

运行结果如下:

用户也可以创建二维字符数组,但要注意保证二维字符数组的每行具有相同的长度。如下所示的字符串是合法的,因为它的每行都有6个字符:

上述语句的输出结果如下:

当创建的多个字符串具有不同的长度时,可以在字符串的尾部添加空格来强制实现字符串具有相同的长度。具体示例如下:

运行结果如下:

更简单的方法是利用char()函数来创建字符串。使用char()函数创建字符串数组时,如果字符串不具有相同的长度,则char()函数自动用空格把字符串补足到最长的字符串的长度。具体示例如下:

运行结果如下:

strvcat()函数与char()函数具有类似的功能。strvcat()函数把多个字符串合并为一个字符串数组。当字符串不具有相同的长度时,strvcat()函数自动在尾部添加空格补足到最长的字符串的长度。具体示例如下:

运行结果如下:

把上述字符数组转换成字符串单元数组的代码如下所示:

运行结果如下:

注 意
cellstr()函数可以把字符串尾部的空格删除。可以查看celldata的第1个字符串长度,具体示例如下:

运行结果如下:

可以使用char()函数把一个字符串单元数组转换成一个字符数组,具体示例如下:

运行结果如下:

使用如下所示的代码可以得到其第1个字符串的长度:

运行结果如下:

7.1.2 创建二维字符数组
在 MATLAB 中还可以创建二维字符数组,但一个数组中每行的长度都必须相等。如果其中的一行比其他行短,那么这个字符数据将无效,并产生一个错误。例如,如下所示的语句是非法的,因为两行的长度不同:

创建二维字符数组最简单的方法是使用 char()函数,使用该函数可以自动寻找所有字符串中最长的那一个。
具体示例如下:

可以使用deblank()函数删除多余的空格。例如,如下所示的语句用于删除name数组中第2行多余的空格,并将运行结果与原来的进行比较:

