水平连接字符串的单元格数组

Chr*_*s R 11 matlab

我希望水平连接字符串单元格数组的行,如下所示.

start = {'hello','world','test';'join','me','please'}

finish = {'helloworldtest';'joinmeplease'}
Run Code Online (Sandbox Code Playgroud)

是否有任何内置函数可以完成上述转换?

gno*_*ice 22

使用NUM2CELLSTRCAT函数可以轻松实现非循环方式:

>> finish = num2cell(start,1);
>> finish = strcat(finish{:})

finish = 

    'helloworldtest'
    'joinmeplease'
Run Code Online (Sandbox Code Playgroud)


Jon*_*nas 1

一个简单的方法是对行进行循环

nRows = size(start,1);
finish = cell(nRows,1);

for r = 1:nRows
    finish{r} = [start{r,:}];
end
Run Code Online (Sandbox Code Playgroud)

编辑

一个更复杂且稍微难以阅读的解决方案,它具有相同的功能(一般解决方案留给读者作为练习)

finish = accumarray([1 1 1 2 2 2]',[ 1 3 5 2 4 6]',[],@(x){[start{x}]}

  • @ChrisR:如果你不喜欢 for 循环,你可以在一行中编写:`finish = arrayfun(@(i)[start{i,:}], 1:size(start,1), 'UniformOutput' ,假)';` (2认同)