2012-05-26 2 views
1

Я пытаюсь найти и удалить коррелированных столбцы данных с помощью функции нижеMATLAB: Удаление повторяющихся строк с одинаковыми значениями в другом порядке

function [ correlated ] = correlated(data, threshold) 
% data is m x m matrix 
% threshold is correlation threshold 


c=corr(data); 
[i,j] = find(c>threshold); 
A = [i,j]; 
A=A(find(arrayfun(@(i)length(unique(A(i,:))),1:size(A,1))==size(A,2)),:); 
% as A also includes 1 1; 2 2; 3 3; etc so I used above line that I found somewhere 

%  6  4 
%  8  4 
%  4  6 
%  8  6 
%  4  8 
%  6  8 
%  14 11 
%  11 14 

% it should not contain both 6 4; and 4 6; how do I remove all such rows? 

end 

он не должен содержать как 6: 4; и 4 6; как удалить все такие строки?

ответ

4
uniqueA = unique(sort(A,2), 'rows'); 
+0

Простой, как и должно быть. Спасибо :) – SMUsamaShah

+0

:) Добро пожаловать. – Ansari

+0

вы могли бы сказать: 'sort (A, 2)' – Amro

Смежные вопросы