1 函数原型
pcl::getMeanStd (const std::vector<float> &values, double &mean, double &stddev)
或者
pcl::getMeanStdDev(const std::vector<float> &values, double &mean, double &stddev);
2 代码实现
给定float类型的向量,输出均值和标准差
#include <pcl/io/pcd_io.h>
#include <pcl/common/common.h>
using namespace std;
typedef pcl::PointXYZ PointT;
int main()
{
//---------------------------- 加载点云 --------------------------
pcl::PointCloud<PointT>::Ptr cloud(new pcl::PointCloud<PointT>);
if (pcl::io::loadPCDFile("test.pcd", *cloud) < 0)
{
PCL_ERROR("->点云文件不存在!\a\n");
system("pause");
return -1;
}
cout << "->加载了 " << cloud->points.size() << " 个数据点" << endl;
//================================================================
//------------------------ 计算点云均值与标准差 --------------------
double mean; //点云均值
double stddev; //点云标准差
vector<float> vec_x;
for (size_t i = 0; i < cloud->points.size(); i++)
{
vec_x.push_back(cloud->points[i].x);
}
pcl::getMeanStd(vec_x, mean, stddev);
cout << "\n->点云X坐标的均值为:" << endl;
cout << mean << endl;
cout << "\n->点云X坐标的标准差为:" << endl;
cout << stddev << endl;
//================================================================
return 0;
}
源码:
pcl::getMeanStd (const std::vector<float> &values, double &mean, double &stddev)
{
double sum = 0, sq_sum = 0;
for (size_t i = 0; i < values.size (); ++i)
{
sum += values[i];
sq_sum += values[i] * values[i];
}
mean = sum / static_cast<double>(values.size ());
double variance = (sq_sum - sum * sum / static_cast<double>(values.size ())) / (static_cast<double>(values.size ()) - 1);
stddev = sqrt (variance);
}
3 输出结果
->加载了 1348 个数据点
->点云X坐标的均值为:
6.86964
->点云X坐标的标准差为:
4.48687
4 源码
inline void
pcl::getMeanStd (const std::vector<float> &values, double &mean, double &stddev)
{
double sum = 0, sq_sum = 0;
for (size_t i = 0; i < values.size (); ++i)
{
sum += values[i];
sq_sum += values[i] * values[i];
}
mean = sum / static_cast<double>(values.size ());
double variance = (sq_sum - sum * sum / static_cast<double>(values.size ())) / (static_cast<double>(values.size ()) - 1);
stddev = sqrt (variance);
}
相关链接
版权声明:本文为weixin_46098577原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。