如何用matlab比较矩阵其中一列的相似度??高手可以提示一下不??

如果矩阵A,B是n行5列的,要让A的最左边的一列与B的最右边的一列进行相似度比较,怎样得出个百分数??主要是需要程序 求大神指点迷津啊·····

第1个回答  推荐于2017-11-26
相似度就是做相关,用xcorr函数,n行的话,最后得出的结果是2n-1,但不管是多少了,你就用最中间的数做一下归一化,就是相似度了,等于1表示完全一样,-1表示完全相反。正数表示正相关,负的表示负相关。

再说说归一化的分母,两个数列各自的平方和,开根号,再相乘。sqrt(a1^2+a2^2+...)*sqrt(b1^2+b2^2+....),就这样的追问

可以用corr2函数不?我比较最后答案是0.1368 不知道是什么意思啊?······

追答

也可以吧,效果都差不多。
0.1368,一般来讲的话,就说明相关性比较低,用你问题里的话说就是相似度比较差。数值在[0 1]之间表示正相关,越大表明相似度越高,越小表明相似度越低。

追问

那运行出来是NAN是什么意思呢??灰常感谢~~~~

追答

NaN是Not A Numner 的缩写,意思是非数,经常因为除以0而出现。比如a/0,=NAN。0/0也是NAN。所以如果你某列元素全部为0的话,那就会出现这种结果。

追问

还有一个编程问题卡住了~~~需要循环语句 用一个矩阵跟其他18个矩阵连续比较 取相似度最高的 请问要怎样下手呢/.?? 求指点·····勒是我的QQ352148189 你说你的也可以~~~~~三扣!~~!!

还有一个编程问题卡住了~~~需要循环语句 用一个矩阵跟其他18个矩阵连续比较 取相似度最高的 请问要怎样下手呢/.?? 求指点·····勒是我的QQ352148189 你说你的也可以~~~~~三扣!~~!!

追答

那你就用一个数组把所有的比较结果记下来,然后取数值最大的就是了。这虽然可能稍微麻烦点, 但是不难的,耐心点,肯定能搞定。

追问

嗯嗯 非常感谢给我指导了这么多!~~~~谢谢!

本回答被提问者采纳
相似回答