设计函数实现计算多维信号中各元素到参考点的距离(欧几里 得距离、街区距离或者余弦距离)c语言实现
时间: 2024-04-30 19:17:34 浏览: 149
Python计算一个点到所有点的欧式距离实现方法
以下是C语言实现多维信号中各元素到参考点的距离的函数:
```c
#include <stdio.h>
#include <math.h>
#define DIM 3 // 定义维度
// 欧几里得距离函数
float euclidean_distance(float *x, float *y)
{
float sum = 0.0;
for (int i = 0; i < DIM; i++) {
sum += pow((x[i] - y[i]), 2);
}
return sqrt(sum);
}
// 街区距离函数
float manhattan_distance(float *x, float *y)
{
float sum = 0.0;
for (int i = 0; i < DIM; i++) {
sum += fabs(x[i] - y[i]);
}
return sum;
}
// 余弦距离函数
float cosine_distance(float *x, float *y)
{
float sum_xy = 0.0, sum_x = 0.0, sum_y = 0.0;
for (int i = 0; i < DIM; i++) {
sum_xy += x[i] * y[i];
sum_x += pow(x[i], 2);
sum_y += pow(y[i], 2);
}
return 1 - sum_xy / (sqrt(sum_x) * sqrt(sum_y));
}
int main()
{
float x[DIM] = {2, 3, 4}; // 定义多维信号中的一个点
float y[DIM] = {1, 2, 3}; // 定义参考点
float euclidean = euclidean_distance(x, y);
float manhattan = manhattan_distance(x, y);
float cosine = cosine_distance(x, y);
printf("Euclidean Distance: %f\n", euclidean);
printf("Manhattan Distance: %f\n", manhattan);
printf("Cosine Distance: %f\n", cosine);
return 0;
}
```
在这个例子中,我们定义了三个函数分别计算欧几里得距离、街区距离和余弦距离,然后在主函数中定义了一个多维信号中的点和一个参考点,并计算了它们之间的三种距离。
阅读全文