在特征量对照时,有时求出两个特征向量之间的相似度。 以下代码求出两个特征向量的幻想小蚂蚁的距离,转换成相似度的几行代码。
1 .相似度一般在0-1之间,但由于虚幻的小蚂蚁可能会增加距离,所以首先将特征向量归一化在0-1之间。
2 .求幻想小蚂蚁的距离
3 .欧式距离越大,相似度越低,所以后来用一个公式进行了变换。
floatCMP_featLV2(constvoid*_f1,const void* _f2 ) constfloat*pf1=(float* ) _F1,*pf2=) float * _ ) float temp=0.0; float ptemp1[256]={0.0}; float ptemp2[256]={0.0}; //首先将特征值归一化到0-1之间。float norm1=0.0; float norm2=0.0; for(autoI=0; i 256; I ) {norm1 =pf1[i] * pf1[i]; norm2 =pf2[i] * pf2[i]; }norm1=sqrt(norm1); //求出向量的模norm2=sqrt(norm2)//求出向量的类型for (autoi=0; i 256; I ) {ptemp1[i]=pf1[i]/norm1; ptemp2[i]=pf2[i]/norm2; //求出欧式距离for (autoi=0; i 256; I ) ) temp=(* (ptemp1[i] - ptemp2[i] ) ) ptemp1[I]-ptemp2[I]; }c=sqrt(temp ); 返回(1/) 1c ); (欧式距离越大,相似度就越小,所以有必要将欧式距离转换为相似度。 }