Как сделать матрицу расстояний Махаланобиса в 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
Другие вопросы по тегам