我试图创建一个字符串数组,其字符串数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)
答案 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'};