2014-11-21 50 views
2

我有兩個單元陣列cellAcellB單元陣列內的每個小區的每個具有1060 elements.The大小cellA870*1cellB同樣是16*1。我想將這兩個組合成第三個單元陣列cellC。不是將單元格本身組合起來,而是將每個單元格的數據組合起來,以便在組合它們的大小後變成886*1如何組合兩個單元陣列的數據?

伊夫嘗試了這些命令,但它們結合的細胞,而不是數據內的每個

cellC = [cellA cellB]; 
cellC = [{cellA} {cellB}]; 
+2

爲什麼不先讓它們成爲1060x870和1060x16單元格矩陣? – 2014-11-21 19:40:11

回答

3

嘗試這種情況:

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

如果元素是列向量,那麼您需要垂直連接它們,即cellfun() – KQS 2014-11-21 20:41:21

+1

@ user1877862內部的[x; y]而不是[x y],這是正確的,感謝評論。 – 2014-11-21 21:26:44

+0

@CapeCode可以推廣到2個以上的cellarrays嗎?如果我有1x1000和b,1x1000和** c,1x1000 **和d ...應該給你4x1000? – user2305193 2018-01-10 20:20:28

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 
1

我只是不喜歡簡單的東西:

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

這將導致單元陣列是886長。從你的問題,我不知道你是否想要一個常規數組(這是上面的其他答案會給出)或一個單元格數組。如果你確定獲得一個單元陣列,這是一個非常簡單的方法。