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

时间:2019-01-19 19:02:38

标签: matlab

我在Matlab中有一个大小为A的数字单元格数组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

1 个答案:

答案 0 :(得分:0)

只需将单元格数组转换为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,:,:}    

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