在matlab中,如果想表达一组字符串,不能定义如下的字符串数组:
Str=[‘字符串1’,’字符串2’]
因为这实际会被链接成为一个字符串,如显示Str(1)的结果为’字符串1字符串2’。
一个办法是改变为字符串列数组:
Str=[‘字符串1’;’字符串2’]
但matlab的矩阵要求,每行的字符串长度必须必须相等,所以如下字符串是不合法的:
Str=[‘字符串长度1’;’字符串’]
因此,可以改变为cell数组(异质数组),如下(行或者列均可):
Str={‘字符串长度1’,’字符串’}或者字符串长度1’;’字符串’}
但是要注意,由于cell数组或者矩阵的每个元素可以是不同类型的,因此,对一般矩阵的运算有时不能简单地用于cell数组中,如可对数组做如下的逐个叠加运算:
Str=[];
for i=1:5
str=[str,;‘aa ‘];
end
运算结果为:[‘aa ’; ‘aa ’; ‘aa ’; ‘aa ’; ‘aa ’],实现了循环增加字符串行的功能
但对cell数组类似操作试图实现循环增加字符串元素个数:
str={}
for i=1:5
str={str,’aa ‘};
end
其结果只会是一个1行2列的cell数组,第一列是另一个cell数组,第二列才是字符串’aa ‘,从而形成第一个元素是一个嵌套的cell数组的情况,这是因为cell数组的元素可以是不同类型的另一个cell数组造成的。而要实现上述目的,必须写如下代码:
str={}
for i=1:5
str={str{1,:},’aa ‘};
end
这样结果就为:{‘aa ’,’aa ‘,’aa ’,’aa ’,’aa ‘,’aa’}