如何组合两个单元阵列的数据?

时间:2014-11-21 19:21:57

标签: arrays matlab matrix vector

我有两个单元格数组cellAcellB每个都有1060个元素。单元格数组cellA中每个单元格的大小为870*1,而{{1}的大小相同是cellB。我想将这两者组合成第三个单元格数组16*1。不是将单元格本身组合在一起,而是将每个单元格的数据组合在一起,这样在组合后它们的大小就变为cellC

我已尝试过这些命令,但它们组合了单元格,而不是每个

中的数据
886*1

3 个答案:

答案 0 :(得分:3)

试试这个:

cellC=cellfun(@(x,y) [x y], cellA, cellB, 'UniformOutput', false);

答案 1 :(得分:1)

通过水平连接单元格将每个单元格数组转换为矩阵;然后垂直连接这些矩阵;并转换回列的单元格数组:

cellC = mat2cell([[cellA{:}]; [cellB{:}]], numel(cellA{1})+numel(cellB{1}), [1 1]);

示例:

>> cellA = {(1:4).', (11:14).'};
>> cellB = {(101:103).', (111:113).'};
>> cellC = mat2cell([[cellA{:}]; [cellB{:}]], numel(cellA{1})+numel(cellB{1}), [1 1])
cellC = 
    [7x1 double]    [7x1 double]
>> cellC{:}
ans =
     1
     2
     3
     4
   101
   102
   103
ans =
    11
    12
    13
    14
   111
   112
   113

答案 2 :(得分:1)

我只是做一些简单的事情:

cellC = {cellA{:} cellB{:}};

这将导致一个886长的单元阵列。从您的问题来看,我不确定您是否需要常规数组(这是上面的其他答案将给出的)或单元格数组。如果您在获取单元格数组时表现不错,这是一种非常简单的方法。