多维数组删除重复 - matlab

时间:2016-02-14 16:57:30

标签: matlab matrix intersection

对于i = 1:n,我有一个多维数组A(:,:,i),A的大小为6x6

我设置子矩阵A(1:2,1:2,i)= 0和A(3:6,3:6,i)= 0.

我得到了一系列矩阵(正好是n个矩阵)但现在有很多重复例如i = 1:8我有完全相同的矩阵。

有没有办法只保留不同的矩阵并删除重复?

我想要的功能"相交"但对于矩阵。

示例:如果A(:,:,1)== A(:,:,3)那么我想删除A(:,:,3)并且只保留在我的A矩阵A列表中(: 。,:1)

谢谢。

1 个答案:

答案 0 :(得分:1)

unique函数,但它只支持2D矩阵中的行,而不支持3D矩阵中的2D矩阵。要解决此问题,请将3D矩阵转换为2D矩阵,其中每个切片A(:,:,i)变为行B(i,:)。然后应用唯一并将转换还原为3D。

zs=size(A);
B=reshape(A,[],sz(3)).';
reshape(unique(B,'rows').',sz(1),sz(2),[]);