Выберите уникальные строки из числовых массивов ячеек в Matlab, когда строки имеют разные размеры - PullRequest
0 голосов
/ 19 января 2019

У меня есть числовой массив ячеек 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.

1 Ответ

0 голосов
/ 19 января 2019

Просто преобразуйте массив ячеек в матрицу Datahashes .

Затем отметьте Уникальные строки , как обычно.

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

Вы можете применить это только к первому столбцу и двигаться дальше после этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...