如何在MATLAB中生成马氏距离矩阵?

如何在MATLAB中生成马氏距离矩阵?,matlab,matrix,mahalanobis,Matlab,Matrix,Mahalanobis,我有一个数据集,每个样本有5个重复,25个变量。 我试图使用这些参数在所有样本之间建立马氏距离矩阵。我使用了“mahal”函数,但它给出了每个重复的所有距离的向量。如何生成样本(38*38)与向量(1*190)之间的距离矩阵?对于某些测试数据: X = rand(38,25); % some random test data with 38 observations and 25 variables X = repmat(X,5,1); % 5 duplicates of each observ

我有一个数据集,每个样本有5个重复,25个变量。 我试图使用这些参数在所有样本之间建立马氏距离矩阵。我使用了“mahal”函数,但它给出了每个重复的所有距离的向量。如何生成样本(38*38)与向量(1*190)之间的距离矩阵?

对于某些测试数据:

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