当行具有不同的大小时,在 Matlab 中选择数字单元格数组的唯一行



我在 Matlab 中有一个大小为 Mx3 的数字单元格数组A

我想选择单元格的唯一行。

问题之一是电池组件可能具有不同的尺寸。

例如

A{1,1}=[1 1];
A{1,2}=3;
A{1,3}=[4 4 4 4];
A{2,1}=0;
A{2,2}=[10 10];
A{2,3}=7;
A{3,1}=[1 1];
A{3,2}=3;
A{3,3}=[4 4 4 4];

输出应为

B{1,1}=[1 1];
B{1,2}=3;
B{1,3}=[4 4 4 4];
B{2,1}=0;
B{2,2}=[10 10];
B{2,3}=7;

在我的实际案例中M=27000.

只需将单元格数组转换为数据哈希矩阵即可。

然后,像往常一样检查唯一行。

opt.Method='MD2';   % Select the cheapest one
opt.Format='uint8'; % Select a numeric one
b=arrayfun(@(x)sum(GEN.checksum(x,opt)),A,'uni',true)
[~,i]=unique(b(:,1),'rows')
Au=A{i,:,:}    

您只能将其应用于第一列,然后更深入。

最新更新