多维数组删除重复 - matlab

multidimensional array delete repetition - matlab

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

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

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

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

我想要函数 "intersect" 但对于矩阵。

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

谢谢。

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

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