1

異なるサイズの行列の配列があります。それぞれ同じサイズの行列を含む n 個の配列を作成したいと考えています。だから私が持っている場合:

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

私は取得したい:

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

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

1 に答える 1

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]
于 2013-06-14T15:50:32.093 に答える