对于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)
谢谢。
答案 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),[]);