Matlab unique () против Excel Удалить дубликаты - PullRequest
0 голосов
/ 05 декабря 2018

Я испытываю очень странную проблему, когда Matlab unique(A, 'rows', 'stable') и Excel - Remove Duplicates не дают одинаковых результатов на основе большого файла (7020 * 132).Это удивительно до такой степени, что на маленькой матрице:

A= [2 2 2 2; 4 6 0 9; 2 2 2 2 ; -1 -3 8 15]

unique(A, 'rows', 'stable') дает [2 2 2 2; 4 6 0 9; -1 -3 8 15], что правильно.Однако в файле (7020 * 132) команда Matlab unique(FileasMatrix_ofDouble_type, 'rows', 'stable') не находит дубликатов, тогда как Excel находит дубликаты 5263 (дубликаты на основе первого столбца), которые также быстро обнаруживаются (глазами) при открытиифайл.

Поэтому мне интересно, не сталкивался ли кто-то с подобными проблемами в целях обмена.Лучший

PS: к сожалению, нет возможности загрузить dataset.xlsx, чтобы поделиться этим странным явлением

1 Ответ

0 голосов
/ 05 декабря 2018

Это кажется из вашего описания, что вы ожидали unique, чтобы удалить строки, где первый элемент совпадает.Это не то, как unique(___,'rows') работает.Однако мы можем повторить эту операцию в MATLAB.

Из документации до unique:

[C,ia,ic] = unique(___) также возвращает индексные векторы ia иic с использованием любого из предыдущих синтаксисов.
Если A является вектором, то C = A(ia) и A = C(ic).

Таким образом, если мы применим unique к первому столбцуМатрица вернет в ia индексы строк, которые вы хотели бы сохранить.Регулярная индексация сделает это.Например:

A = randi(4,10,6);
[~,index] = unique(A(:,1),'stable');
B = A(index,:);
...