c++ computeMeanAndCovarianceMatrix例子
时间: 2024-09-27 20:05:06 浏览: 28
在C++中,计算均值和协方差矩阵通常用于处理数据集,特别是在机器学习或数据分析场景中。这里是一个简单的例子,展示如何计算一组二维向量的均值和协方差矩阵:
```cpp
#include <iostream>
#include <vector>
#include <Eigen/Dense>
// 定义一个函数来计算平均值(均值)
Eigen::Vector2f computeMean(const std::vector<Eigen::Vector2f>& data) {
Eigen::Vector2f mean(0.0, 0.0);
for (const auto& vector : data) {
mean += vector;
}
return mean / static_cast<float>(data.size());
}
// 定义一个函数来计算协方差矩阵
Eigen::Matrix2f computeCovarianceMatrix(const std::vector<Eigen::Vector2f>& data, const Eigen::Vector2f& mean) {
Eigen::Matrix2f covariance(2, 2);
for (const auto& vector : data) {
covariance += (vector - mean).cross((vector - mean));
}
covariance /= static_cast<float>(data.size() - 1); // 使用n-1的原因是去偏估计
return covariance;
}
int main() {
std::vector<Eigen::Vector2f> dataset = {Eigen::Vector2f(1, 2), Eigen::Vector2f(2, 4), Eigen::Vector2f(3, 6)};
Eigen::Vector2f mean = computeMean(dataset);
Eigen::Matrix2f covariance = computeCovarianceMatrix(dataset, mean);
std::cout << "Mean: (" << mean.x() << ", " << mean.y() << ")" << std::endl;
std::cout << "Covariance Matrix:\n" << covariance << std::endl;
阅读全文