Matlab如何从不同大小的矩阵数组中创建n个大小相等的矩阵

时间:2013-06-14 15:12:33

标签: arrays matlab matrix

我有一个不同大小矩阵的数组。我想创建n个数组,每个数组包括相等大小的矩阵。如果我有:

 ArrayA =
 <9x10 double>
 <7x10 double>
 <9x10 double>
 <9x10 double>
 <7x10 double>

我想获得:

ArrayA1 =
<9x10 double>
<9x10 double>
<9x10 double>

ArrayA2 =    
<7x10 double>
<7x10 double>

1 个答案:

答案 0 :(得分:1)

mat = 

[4x5 double]
[4x5 double]
[5x5 double]
[4x5 double]
[5x5 double]
[6x5 double]
[5x5 double]

我假设所有都是nx5,因此只检查行。

arr_sizes =  arrayfun(@(x) size(mat{x},1),1:size(mat,1))'

这给出了:

arr_sizes =

 4
 4
 5
 4
 5
 6
 5

现在:

[~, ~, idx] = unique(arr_sizes);

最终输出将是:

tot_arr = arrayfun(@(x) mat(idx == x), 1:max(idx),'UniformOutput',false)';

tot_arr =

{3x1 cell}
{3x1 cell}
{1x1 cell}

现在,tot_arr包含3个数组,您调用的数组ArrayA1, ArrayA2等。

tot_arr{1}

ans = 

[4x5 double]
[4x5 double]
[4x5 double]