将字符串附加到Matlab数组

时间:2010-02-18 13:34:08

标签: arrays string matlab append

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

以下是我想要做的一小段代码:

for_loop
  filename = 'string';
  name=[name; filename]
end

9 个答案:

答案 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

(当然如果字符串全部相同或形成带有模式的序列,有更好的方法来创建没有循环的数组。上面只是一个逐个填充数组的例子。一个)。

string容器还可以转换为character arrayscell arrays of chars

答案 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

应该做你想做的事。