将字符串附加到字符串数组(Matlab)

时间:2015-08-26 18:25:46

标签: arrays string matlab

我试图创建一个字符串数组,其字符串数length(vector)

这是我到目前为止所做的:

for idx = 1:length(vectorName)
   str(idx) = 'someStr';
   strArray = [str];
end

如何将每个字符串附加到字符串数组?

我希望结果看起来像:

strArray = ['someStr','someStr','someStr',...]

其中重复次数等于输入矢量的长度。

修改

举个例子:

someVector = [1 1 1 1 1];
string = 'someStr';

我希望结果是一个字符串数组,如下所示:

strArr = [someStr someStr someStr someStr someStr];

以便大小(strArr)等于size(someVector)

1 个答案:

答案 0 :(得分:2)

您真正要求的是cell array个字符串,其中每个单元格都是您想要的字符串的副本。您将拥有此字符串的多个副本,单元格的每个元素都是此字符串的一个副本。如果要使代码正常工作,则必须在代码开头将strArray初始化为空单元格数组,然后将循环中每次迭代的字符串追加到此单元格数组:

strArray = {};
str = 'someStr';
for idx = 1:length(vectorName)
   strArray = [strArray str];
end

请注意,循环中的str(idx)语句是多余的,并且不需要。只需在循环之前声明一次,然后允许将字符串附加到循环内。但是,使用repmat是更好的方法:

strArray = repmat({'someStr'}, 1, length(vectorName));

...更简单的方法是确保在代码的开头声明strArray,然后自动允许MATLAB创建一个包含尽可能多的单元格的单元格数组因为length(vectorName)中存在并通过将每个单元格指定为相同的东西切入单元格:

strArray(1:length(vectorName)) = {'someStr'};