余弦相似度C语言实现代码
时间: 2024-11-03 11:17:17 浏览: 72
余弦相似度是一种衡量两个非零向量之间角度的度量,常用于信息检索、推荐系统等领域。在C语言中实现余弦相似度通常涉及向量的点积和模长计算。下面是一个简单的示例:
```c
#include <math.h>
// 定义两个向量
typedef struct {
double x;
double y;
} Vector;
// 计算两个向量的点积
double dot_product(Vector *v1, Vector *v2) {
return v1->x * v2->x + v1->y * v2->y;
}
// 计算向量的模长(即长度)
double vector_length(Vector *v) {
return sqrt(dot_product(v, v));
}
// 计算余弦相似度
double cosine_similarity(Vector *v1, Vector *v2) {
double dot = dot_product(v1, v2);
double length_v1 = vector_length(v1);
double length_v2 = vector_length(v2);
// 如果其中任意一个向量长度为0,余弦相似度为0
if (length_v1 == 0 || length_v2 == 0)
return 0;
return dot / (length_v1 * length_v2);
}
// 使用示例
int main() {
Vector vec1 = {1, 2};
Vector vec2 = {3, 4};
double sim = cosine_similarity(&vec1, &vec2);
printf("Cosine Similarity: %.2f\n", sim);
return 0;
}
```
阅读全文