2016-03-30 209 views
0

我有矩陣的這個單元陣列:使用MATLAB將矩陣向量整合到單元陣列中?

a = [14x16 double] [14x17 double] [14x27 double][14x62 double] [14x16 double] 

不幸的是,我不希望出現這種情況。我需要的是獲得矩陣中的所有矢量並獲得一個大單元矢量陣列。

我該如何做到這一點?

我需要一個大小爲16 + 17 + 27 + 62 + 16的數組,其中每個矢量都有14個元素。

我以前沒有用過很多matlab,我相信這是微不足道的。 有人可以幫忙嗎?

回答

0

您可以在每個單元陣列上調用num2cell,然後使用cat連接它們全部。

%// Generate some test data 
a = arrayfun(@(x)rand(14, x), [16 17 27 62 16] , 'uni', 0); 

    [14x16 double] [14x17 double] [14x27 double] [14x62 double] [14x16 double] 

%// Now merge them into a cell array of vectors 
newcell = cellfun(@(x)num2cell(x, 1), a, 'uni', 0); 
newcell = cat(2, newcell{:}); 

而只是爲了驗證一切是維度我們預計

isequal(size(newcell), [1 16+17+27+62+16]) 

    1 

isequal(size(newcell{1}), [14 1]) 

    1 

相反,如果你只是想一個大的矩陣,你可以在初始數據連接成一個矩陣(沿第二維) :

matrix = cat(2, a{:}); 

size(matrix) 

    14 138 

我會推薦矩陣方法,而不是單元陣列方法,因爲MATLAB高度優化以在矩陣上執行操作。您肯定會使用單元陣列來取得性能優勢。