在matlab中,cmdscale不考虑矩阵距离

问题描述 投票:0回答:1

我试图使用 cmdscale 函数绘制 20x20 矩阵中 20 个二元组之间的距离,但生成的图与矩阵不匹配:我的一些二元组在图上是最接近的,而实际上在以下情况下不是最接近的:我正在查看矩阵中的距离(例如 15 和 7 或 24 和 8)。 该矩阵是对数距离的平均值,问题可能来自于此,即它是否可能与 MDS 如何尝试对我的数据的相似性或相异性进行建模有关?

提前感谢您的帮助!

这是我的矩阵: 第 1 至 8 列

     0    2.9653    3.2230    2.8584    3.1432    3.2808    3.0862    2.9497
2.9653         0    3.0887    3.1811    2.6100    2.8237    2.4911    2.7203
3.2230    3.0887         0    3.5408    3.3518    2.9686    2.9160    2.8658
2.8584    3.1811    3.5408         0    2.9473    3.2303    3.3080    3.0548
3.1432    2.6100    3.3518    2.9473         0    2.6647    3.3269    3.0144
3.2808    2.8237    2.9686    3.2303    2.6647         0    3.0047    3.0691
3.0862    2.4911    2.9160    3.3080    3.3269    3.0047         0    3.0322
2.9497    2.7203    2.8658    3.0548    3.0144    3.0691    3.0322         0
3.1762    3.0108    3.3194    3.1150    3.2592    3.1145    3.1722    3.0799
3.1882    2.9232    3.0836    3.3319    3.2622    3.2148    3.0828    3.2406
2.4554    2.7071    3.0788    3.1644    2.7968    3.0855    3.0433    2.7806
3.2932    2.8705    3.1786    3.4448    3.3172    3.2933    2.8854    3.2879
3.1120    3.1188    2.6459    3.2080    3.2328    3.1568    3.1785    3.1437
3.3260    3.1060    2.6544    3.1201    3.1650    3.0548    2.8884    2.8402
3.2803    2.5523    3.2278    3.2217    2.9949    2.7493    2.7412    3.1340
3.1909    2.8943    3.3254    3.0940    3.0320    3.2344    3.3345    2.9592
3.0632    3.0596    3.2684    3.0824    3.0228    2.9901    3.2752    2.9603
2.5344    2.9183    3.2891    3.0900    3.4848    3.3236    3.1210    2.9667
2.9851    3.0473    2.9082    2.8537    2.8224    2.9758    3.4063    2.9222
2.6194    2.9375    3.0021    3.1546    3.1915    3.1921    3.2581    3.0678

第 9 至 16 列

3.1762    3.1882    2.4554    3.2932    3.1120    3.3260    3.2803    3.1909
3.0108    2.9232    2.7071    2.8705    3.1188    3.1060    2.5523    2.8943
3.3194    3.0836    3.0788    3.1786    2.6459    2.6544    3.2278    3.3254
3.1150    3.3319    3.1644    3.4448    3.2080    3.1201    3.2217    3.0940
3.2592    3.2622    2.7968    3.3172    3.2328    3.1650    2.9949    3.0320
3.1145    3.2148    3.0855    3.2933    3.1568    3.0548    2.7493    3.2344
3.1722    3.0828    3.0433    2.8854    3.1785    2.8884    2.7412    3.3345
3.0799    3.2406    2.7806    3.2879    3.1437    2.8402    3.1340    2.9592
     0    3.2420    3.2435    3.5123    2.9707    2.6942    3.2396    3.3114
3.2420         0    3.0433    2.9127    3.1470    3.3033    3.2497    3.1586
3.2435    3.0433         0    3.1954    3.0412    3.2604    3.0496    2.9285
3.5123    2.9127    3.1954         0    3.2678    3.2255    3.2575    3.1056
2.9707    3.1470    3.0412    3.2678         0    3.3503    3.5184    3.5914
2.6942    3.3033    3.2604    3.2255    3.3503         0    3.0475    2.7524
3.2396    3.2497    3.0496    3.2575    3.5184    3.0475         0    3.2534
3.3114    3.1586    2.9285    3.1056    3.5914    2.7524    3.2534         0
3.1723    3.3090    2.1651    3.5620    3.3848    3.1173    3.1470    2.6516
3.2338    3.0103    2.9089    3.2281    2.6424    3.0992    3.4654    3.0025
3.1500    2.9570    3.1055    3.0921    2.9609    2.9692    3.1632    3.0927
3.0246    3.2398    2.0885    3.4584    2.9437    3.3885    3.1736    3.4367

第 17 至 20 列

3.0632    2.5344    2.9851    2.6194
3.0596    2.9183    3.0473    2.9375
3.2684    3.2891    2.9082    3.0021
3.0824    3.0900    2.8537    3.1546
3.0228    3.4848    2.8224    3.1915
2.9901    3.3236    2.9758    3.1921
3.2752    3.1210    3.4063    3.2581
2.9603    2.9667    2.9222    3.0678
3.1723    3.2338    3.1500    3.0246
3.3090    3.0103    2.9570    3.2398
2.1651    2.9089    3.1055    2.0885
3.5620    3.2281    3.0921    3.4584
3.3848    2.6424    2.9609    2.9437
3.1173    3.0992    2.9692    3.3885
3.1470    3.4654    3.1632    3.1736
2.6516    3.0025    3.0927    3.4367
     0    2.9237    2.8699    2.8729
2.9237         0    3.1148    2.6957
2.8699    3.1148         0    3.1689
2.8729    2.6957    3.1689         0

这是我的代码

figure

[Y,eigvals] = cmdscale(mtrx_to_plot*100);
plot(Y(:,1),Y(:,2),'.','MarkerSize',20)
text(Y(:,1), Y(:,2), arrayfun(@num2str, node_labels_G, 'UniformOutput', false), 'VerticalAlignment','bottom','HorizontalAlignment','right')
xlabel('km')
ylabel('km')

**这是结果图**:

matlab distance
1个回答
0
投票

根据文档

[Y,e] = cmdscale(D) 还返回 Y*Y' 的特征值。当 D 为 欧几里得,e 的前 p 个元素为正,其余为零。如果 e 的前 k 个元素比其余 (n-k) 个元素大得多, 那么你可以使用Y的前k列作为k维点 其点间距离近似为 D。这可以提供有用的 可视化降维,例如 k = 2

运行代码会给出以下特征值:

108515.517929691
96468.2555527725
82677.0188819042
77639.1183543658
70605.7164580977
65554.6563703696
52148.2959167582
46334.8176979909
44060.0550566365
41177.4445305762
35558.8948113113
35168.7111495575
33497.5408730358
30896.8813349555
25821.7237802443
23466.4797806560
16056.1920820620
13412.9555068766
5512.63823213849
8.79260170539034e-11

只有一个特征值明显低于其他特征值。这意味着您至少需要 19 个维度来表示您的数据,而不会损失太多的准确性。这实际上可以通过您在尝试仅使用前 2 个维度表示数据时观察到的情况来说明。

© www.soinside.com 2019 - 2024. All rights reserved.