首页 > 解决方案 > 当行具有不同大小时,在Matlab中选择数字单元格数组的唯一行

问题描述

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

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

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

例如,

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

标签: matlab

解决方案


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

然后,像往常一样检查Unique Rows

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,:,:}    

您可以仅将其应用于第一列,然后再深入。


推荐阅读