行列の重複排除
uniqueを使って、複数の行列から、同じ行列を削除する。
2×4の行列をいくつか作っておく。a4とa5が重複。
>> a1=[1 2 3 4; 5 6 7 8]
a2=[2 3 4 5; 6 7 8 9];
a3=[3 4 5 6; 7 8 9 0];
a4=[1 2 3 4; 5 6 7 8];
a5=[2 3 4 5; 6 7 8 9];a1 =
1 2 3 4
5 6 7 8
reshapeで行ベクトルにして、つなげておく。
>> a1v=reshape(a1,1,[ ])
a2v=reshape(a2,1,[ ]);
a3v=reshape(a3,1,[ ]);
a4v=reshape(a4,1,[ ]);
a5v=reshape(a5,1,[ ]);aa=[a1v;a2v;a3v;a4v;a5v]
a1v =
1 5 2 6 3 7 4 8
aa =1 5 2 6 3 7 4 8
2 6 3 7 4 8 5 9
3 7 4 8 5 9 6 0
1 5 2 6 3 7 4 8
2 6 3 7 4 8 5 9
行単位でuniqueを実行して、reshapeで2×4の行列に戻す。
>> ua=unique(aa,'rows')
size(ua)
reshape(ua(1,:),2,4)
reshape(ua(2,:),2,4)
reshape(ua(3,:),2,4)ua =
1 5 2 6 3 7 4 8
2 6 3 7 4 8 5 9
3 7 4 8 5 9 6 0
ans =3 8
ans =1 2 3 4
5 6 7 8
ans =2 3 4 5
6 7 8 9
ans =3 4 5 6
7 8 9 0