余弦相似的C++代码
时间: 2023-07-10 17:04:27 浏览: 43
以下是一个简单的C++代码,用于计算两个向量之间的余弦相似度:
```c++
#include <iostream>
#include <cmath>
using namespace std;
double cosine_similarity(double a[], double b[], int size) {
double dot_product = 0.0;
double norm_a = 0.0;
double norm_b = 0.0;
for (int i = 0; i < size; i++) {
dot_product += a[i] * b[i];
norm_a += a[i] * a[i];
norm_b += b[i] * b[i];
}
if (norm_a == 0.0 || norm_b == 0.0) {
return 0.0;
}
return dot_product / (sqrt(norm_a) * sqrt(norm_b));
}
int main() {
double a[] = {1.0, 2.0, 3.0};
double b[] = {3.0, 2.0, 1.0};
int size = 3;
double similarity = cosine_similarity(a, b, size);
cout << "Cosine similarity: " << similarity << endl;
return 0;
}
```
在这个例子中,我们定义了一个名为 `cosine_similarity` 的函数,它接受两个向量 `a` 和 `b`,以及它们的大小 `size`。函数首先计算这两个向量的点积和它们的范数,然后根据余弦相似度公式计算它们之间的相似度。如果其中任何一个向量的范数为零,则返回0.0。
在 `main` 函数中,我们声明了两个向量 `a` 和 `b`,并将它们的大小设置为3。然后我们调用 `cosine_similarity` 函数,并将结果存储在变量 `similarity` 中。最后,我们将结果打印到控制台上。