将字符串附加到Matlab数组

Nam*_*ame 29 arrays string matlab append

如何将字符串附加到Matlab数组列?

这是我想要做的一小段代码片段:

for_loop
  filename = 'string';
  name=[name; filename]
end
Run Code Online (Sandbox Code Playgroud)

Amr*_*mro 82

您需要使用单元格数组.如果预先知道迭代次数,我建议您预先分配:

N = 10;
names = cell(1,N);
for i=1:N
    names{i} = 'string';
end
Run Code Online (Sandbox Code Playgroud)

否则你可以这样做:

names = {};
for i=1:10
    names{end+1} = 'string';
end
Run Code Online (Sandbox Code Playgroud)

  • 哇,谢谢{end + 1}语法,我甚至不知道在这种情况下存在"结束". (14认同)
  • 是{end + 1}比{length(..)+ 1}好多了! (2认同)

gno*_*ice 9

正如其他答案所指出的那样,使用单元格数组可能是最简单的方法,这将导致您的变量name是一个单元格数组,其中每个单元格元素都包含一个字符串.

但是,还有另一个使用STRVCAT函数的选项,它将垂直连接字符串.这将创建一个二维字符矩阵,而不是创建一个单元格数组,每行包含一个字符串.如果需要,STRVCAT会自动用空格填充字符串的末端,以正确填充矩阵的行:

>> string1 = 'hi';
>> string2 = 'there';
>> S = strvcat(string1,string2)

S =

hi
there
Run Code Online (Sandbox Code Playgroud)


lin*_*lof 5

如其他地方所述,在MATLAB中,数组中的所有字符串都必须具有相同的长度。要具有不同长度的字符串,请使用单元格数组:

name = {};
for i = somearray
  name = [name; {string}];
end
Run Code Online (Sandbox Code Playgroud)