如何在保持旧细胞完整的同时聚集细胞?

时间:2015-04-21 14:02:25

标签: matlab cell-array

我想基于n x m单元阵列创建一个n x 1单元阵列。我想对n x m单元阵列的每一行进行操作,以便将所有单元放入新阵列中的单个单元中。 例如旧的就像这样

{'a'}, {'bc'}, {'def'}, {'g'}
{'h'}, {'i'}, {'jk'}, {'lmn'}

新的就像这样

{1x4 cell}
{1x4 cell}

在第一个{1x4单元格}内,有4个单元格 {'a'}, {'bc'}, {'def'}, {'g'}等等。怎么做? 我不想合并单元格,使其变为{'abcdefg'}

2 个答案:

答案 0 :(得分:1)

如果您的输入是字符串的2D单元格数组,

c = {'a', 'bc', 'def', 'g';
     'h', 'i',  'jk',  'lmn'};

所需的输出由mat2cell给出(尽管该函数的名称,它的第一个输入可以是任何数组,不一定是矩阵):

result = mat2cell(c, ones(1,size(c,1)), size(c,2));

答案 1 :(得分:0)

这个解决方案不一定是最短的,但是很容易理解。

% define your NxM cell array
%  it is 2x4
x = [{'a'}, {'bc'}, {'def'}, {'g'} ; ...
     {'h'}, {'i'}, {'jk'}, {'lmn'} ]

% number of rows for the cell array
numRows = size(x,1);

% preallocate the output
y = cell(numRows, 1);

% iterate over each row
for k = 1 : numRows
    % get one row of the cell array
    y{k} = x(1,:)

end