连接单元格

时间:2016-10-05 16:32:59

标签: matlab concatenation cell-array

我有一个像这样的6 x 12细胞(称为 M

[1 1 1 1] [2 2 2 2] ... [12 12 12 12]
[13 13 13 13] [14 14 14 14] ... [24 24 24 24]
...
[61 61 61 61] [62 62 62 62] ... [72 72 72 72]

我想垂直连接,所以矩阵将成为1 x 12单元格,应该如下所示:

[1 1 1 1 13 13 13 13 ... 61 61 61 61] [ 2 2 2 2 14 14 14 14 14 ... 62 62 62 62] ...
...

我已尝试vertcat,例如vertcat(M{1,1}, M{2,1}),但这似乎不起作用。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:5)

如果所有细胞都是'内容具有相同大小,在您的示例中,您可以将所有内容连接到矩阵中,然后转换为单元格数组:

result = mat2cell(cell2mat(M.'), ones(1,size(M,2))).';

例如,

M = { [1 1 1 1] [2 2 2 2]
      [13 13 13 13] [14 14 14 14]
      [61 61 61 61] [62 62 62 62] };

这会产生

result{1} =
     1     1     1     1    13    13    13    13    61    61    61    61
result{2} =
     2     2     2     2    14    14    14    14    62    62    62    62

答案 1 :(得分:2)

我在arrayfun ra(m)页面,所以,我的 50 Cent 的MATLAB:

result = arrayfun(@(x) [M{:,x}], 1:12, 'UniformOutput', false);

答案 2 :(得分:1)

这样的事情可以胜任:

% test data
M{1,1}=[1 1];M{1,2}=[2 2];
M{2,1}=[3 3];M{2,2}=[4 4];
M{3,1}=[5 5];M{3,2}=[6 6];


newcell=cell(1,size(M,2));

for ii=1:size(M,2)
    newarray=[];   
    newarray=[newarray, M{:,ii}]; %catch next array and contatenate
    newcell{ii}=newarray;
end