特征值比对代码/计算相似度代码
程序员文章站
2022-07-15 10:52:44
...
float getMold(const vector<float>& vec)
{
/** 获取特征向量模长 **/
int n = vec.size();
float sum = 0.0;
for (int i=0;i<n;i++)
{
sum +=vec[i] *vec[i];
}
return sqrt(sum);
}
float getSimilarity(const vector<float>& left ,const vector<float> & right)
{
/** 获取特征向量间的距离 **/
int n = left.size();
assert(n == right.size());
float tmp =0.0;
for (int i=0;i<n;i++)
{
tmp += left[i] * right[i];
}
return tmp / (getMold(left)*getMold(right));
}