如何将字符串附加到Matlab数组列?
以下是我想要做的一小段代码:
for_loop
filename = 'string';
name=[name; filename]
end
答案 0 :(得分:82)
您需要使用单元格数组。如果预先知道迭代次数,我建议您预先分配:
N = 10;
names = cell(1,N);
for i=1:N
names{i} = 'string';
end
否则你可以做类似的事情:
names = {};
for i=1:10
names{end+1} = 'string';
end
答案 1 :(得分:9)
正如其他答案所指出的那样,使用cell arrays可能是最简单的方法,这将导致变量name
成为一个单元格数组,其中每个单元格元素都包含一个字符串。
但是,还有另一个使用函数STRVCAT的选项,它将垂直连接字符串。这将创建一个二维字符矩阵,而不是创建一个单元格数组,每行包含一个字符串。如果需要,STRVCAT会自动用空格填充字符串的末尾,以正确填充矩阵的行:
>> string1 = 'hi';
>> string2 = 'there';
>> S = strvcat(string1,string2)
S =
hi
there
答案 2 :(得分:5)
如其他地方所述,在MATLAB中,数组中的所有字符串必须具有相同的长度。要使用不同长度的字符串,请使用单元格数组:
name = {};
for i = somearray
name = [name; {string}];
end
答案 3 :(得分:4)
使用strcat
函数使用一行代码追加而不使用循环:
A={'food','banana','orange'}
A ='food''香蕉''橙色'
A = strcat(A,'s')
A ='食物''香蕉''橙子'
答案 4 :(得分:3)
name=[];
for_loop
filename = 'string';
name=[name; {filename}];
end
答案 5 :(得分:1)
如果您使用下面的两个数组(A和B),您可以像对其他矩阵一样添加它们。
A = {'a' ; 'b' ; 'c'};
B = {'1' ; '2' ; '3'};
Result = { A{:,1} ; B{:,1} }
Result =
'a' 'b' 'c'
'1' '2' '3'
答案 6 :(得分:1)
为了完整起见,还应该提到MATLAB R2016b中引入的新string
class;用于文本数据的容器以及一组易于文本操作的函数。
要将其与other example进行比较,以下是如何分配string array:
onMessageReceived()
以下是如何在没有预分配的情况下动态扩展数组:
N = 10;
names = strings(1,N);
for i=1:N
names(i) = 'string';
end
(当然如果字符串全部相同或形成带有模式的序列,有更好的方法来创建没有循环的数组。上面只是一个逐个填充数组的例子。一个)。
答案 7 :(得分:0)
我知道这是一个旧线程,但似乎你甚至不需要一个循环,如果这是你在循环中所做的一切。你能使用垂直连接吗?
mmm = {'str1'; 'str2'; 'str3'};
temp = {'a'; 'b'; 'c'};
mmm = [mmm; temp]
mmm =
'str1'
'str2'
'str3'
'a'
'b'
'c'
答案 8 :(得分:-2)
你走对了路。使用{}构建一个像这样的
的单元格数组stringtable = 'a string';
for i = 1:3
stringtable = {stringtable;new_string(i)}
end
应该做你想做的事。