2012-01-04 7 views

答えて

1

。考え方は、各行列をベクトルに変換し、それらのセル配列を行列に変換して一意に適用することです。結果はNUM2CELLでセル配列に戻すことができます。

x = {[1 2; 3 4], [1 2; 3 4], [5 6; 7 8], [1 2; 3 4], [5 6; 7 8]}'; 
x1 = cellfun(@(y)y(:)', x, 'UniformOutput',0); 
x2 = cell2mat(x1); 
x3 = unique(x2,'rows'); 
x4 = num2cell(x3,2); 
x5 = cellfun(@(y) reshape(y,2,2), x4, 'UniformOutput',0); 

おそらくそれは少ないステップで行うことができます。

このコードは、すべてのセル配列要素が同じサイズである場合にのみ機能することを覚えておくことが重要です。

は、あなたはそれを行うことができたとしても、私はあるようなコードを残していない理由はいかなる理由が表示されない

assert(size(unique(cell2mat(cellfun(@size,x,'UniformOutput',0))),1) == 1,... 
     'Cell elements have different size') 
+0

でこの状態を確認することができます。このように理解することができます –

+0

大変ありがとうございます。 –

関連する問題