2016-03-30 168 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高度优化以在矩阵上执行操作。您肯定会使用单元阵列来取得性能优势。