2015-08-26 297 views
0

我试图创建具有时代某些字符串length(vector)号的字符串数组追加一个字符串,字符串数组(Matlab的)

这是我到目前为止有:

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

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

我想要的结果看起来是这样的:

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

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

EDIT

举个例子:

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

我想要的结果是串的阵列看起来像这样:

strArr = [someStr someStr someStr someStr someStr]; 

,使得大小(strArr)等于大小(someVector)

+1

这就是'repmat'是:'strArray = repmat(STR, 1,长度(矢量))' –

+0

嗨@丹你有多个问题仍然打开没有接受的答案。当一个答案已经解决哟你的问题请考虑[接受它](http://meta.stackexchange.com/q/5234/179419)通过点击复选标记。这向更广泛的社区表明您已找到解决方案。 – Daniel

回答

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'}; 
+2

'repmat'绝对好一点。 – Jubobs

+0

非常感谢你们所有人的回答 – Dan

+0

只是一个问题。当我这样做: strArray = repmat( 'someStr',1,长度(vectorName)), strArray的长度等于内strArray元素乘以7. 例如数量,如果有8个串strArray中的元素,当我运行length(strArray)时,它给了我“56”。 我的代码有什么问题吗?或者是,如何repmat自动工作? – Dan