Как сделать матрицу расстояний Махаланобиса в MATLAB?
У меня есть набор данных с 5 повторами для каждого образца и 25 переменных. Я пытаюсь сделать матрицу расстояний Махаланобиса между всеми образцами, используя эти параметры. Я использовал функцию "махал", но это дает вектор всех расстояний для каждого повтора. Как сделать матрицу расстояний между выборками (38*38), а не вектором (1*190)?
1 ответ
Для некоторых тестовых данных:
X = rand(38,25); % some random test data with 38 observations and 25 variables
X = repmat(X,5,1); % 5 duplicates of each observation
Вы можете использовать:
X = unique(X,'rows'); % remove duplicate observations
D = pdist(X,'mahalanobis'); % distance between all remaining observations
Z = squareform(D); % to square matrix format