编程c++欧式距离归一化处理
时间: 2023-06-18 18:05:49 浏览: 89
欧式距离归一化处理可以使用以下步骤:
1. 计算欧式距离:对于两个向量x和y,欧式距离为d = sqrt(sum((x-y)^2)),其中^2表示平方,sum表示求和,sqrt表示平方根。
2. 找到向量中的最大值和最小值:对于向量中的每个元素,找到最大值和最小值。
3. 归一化处理:对于每个元素,使用以下公式进行归一化处理:x' = (x - min) / (max - min),其中x'是归一化后的值,x是原始值,max和min是向量中的最大值和最小值。
下面是一个C++代码示例:
```c++
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
double euclidean_distance(vector<double> x, vector<double> y) {
double distance = 0.0;
for (int i = 0; i < x.size(); i++) {
distance += pow(x[i] - y[i], 2);
}
return sqrt(distance);
}
void normalize(vector<double>& x) {
double max_val = x[0];
double min_val = x[0];
for (int i = 1; i < x.size(); i++) {
if (x[i] > max_val) {
max_val = x[i];
}
if (x[i] < min_val) {
min_val = x[i];
}
}
for (int i = 0; i < x.size(); i++) {
x[i] = (x[i] - min_val) / (max_val - min_val);
}
}
int main() {
vector<double> x = {1.0, 2.0, 3.0};
vector<double> y = {4.0, 5.0, 6.0};
double distance = euclidean_distance(x, y);
cout << "Euclidean distance: " << distance << endl;
vector<double> z = {1.0, 2.0, 3.0, 4.0, 5.0};
normalize(z);
cout << "Normalized vector: ";
for (int i = 0; i < z.size(); i++) {
cout << z[i] << " ";
}
cout << endl;
return 0;
}
```
阅读全文