C++实现MATLAB中pdist函数
时间: 2024-05-04 19:21:13 浏览: 115
MATLAB中的pdist函数用于计算一组数据中两两样本之间的距离。在C++中,可以使用以下代码实现pdist函数的功能:
```c++
#include <cmath>
#include <vector>
double euclidean_distance(const std::vector<double>& x, const std::vector<double>& y) {
double distance = 0.0;
for (size_t i = 0; i < x.size(); ++i) {
distance += std::pow(x[i] - y[i], 2);
}
return std::sqrt(distance);
}
std::vector<double> pdist(const std::vector<std::vector<double>>& data) {
std::vector<double> distances;
for (size_t i = 0; i < data.size(); ++i) {
for (size_t j = i + 1; j < data.size(); ++j) {
double distance = euclidean_distance(data[i], data[j]);
distances.push_back(distance);
}
}
return distances;
}
```
其中,`euclidean_distance`函数用于计算两个样本之间的欧氏距离,`pdist`函数则遍历所有样本对,并调用`euclidean_distance`计算距离,最终返回所有距离值的向量。注意,这里的输入数据应为一个二维向量,其中每个子向量表示一个样本的特征向量。
阅读全文