所以我有三个预定义的 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 到预定义矩阵之一的距离,这是一个很好的开始,可以看到每个元素与所需元素的差异,但我真的不知道这是否是正确的方法开始,如果是,我不确定如何继续......
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 页面 上的示例作为起点 - 您必须选择一个。