Matlab - 找出三个矩阵中的哪一个最相似

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

所以我有三个预定义的 1 行矩阵

例如:

a = [0.4 0.25 0.5 -0.6 0.2]
b = [-0.8 0 0 0.7 -0.25]
c = [0.15 -0.4 -0.8 0.3 -0.05]

我有另一个多行矩阵,例如:

x = [0.78   0.51    -0.27   -1.18   1.12;
    -1.28   0.51    -0.27   1.22    1.12;
    -1.28   0.96    -0.27   -0.22   0.14;
    1.30    0.51    0.71    -1.18   0.63;
    0.78    -1.32   -1.76   0.25    -1.79]

有没有办法找出矩阵 x 的每一行与哪个预定义矩阵最相似?

例如得到这样的结果:“第1行与a最相似;第2行与c最相似,等等?

提前谢谢你

我已经尝试过 pdist() 来计算矩阵 x 到预定义矩阵之一的距离,这是一个很好的开始,可以看到每个元素与所需元素的差异,但我真的不知道这是否是正确的方法开始,如果是,我不确定如何继续......

matlab matrix distance similarity calculation
1个回答
0
投票

pdist2
是计算两组观察值之间的距离(又名相异性)的函数。

所以,你想把你的观察组合成一个矩阵(即

[a;b;c]
),然后使用
pdist2
。幸运的是,有标志可以获取具有
'Smallest'
相异性(即最大相似性)的观察指标。

所以,

[D, I] = pdist2([a;b;c], x, 'euclidean', 'smallest', 1)
返回
I = [1 2 2 1 3]
,因此第 1 行最接近 a,第 2 行最接近 b,第 3 行最接近 b,第 4 行最接近 a,第 5 行最接近 c。

作为警告:请参阅@kikon 的评论。 “相似性”取决于上下文,需要精确的数学公式。请参阅 doc 页面 上的示例作为起点 - 您必须选择一个。

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