42 #include <pcl/memory.h>
43 #include <pcl/pcl_macros.h>
64 using Point = std::vector<float>;
74 Kmeans(
unsigned int num_points,
unsigned int num_dimensions);
106 if (num_points_ != data.size())
107 std::cout <<
"Data vector not the same" << std::endl;
115 if (num_dimensions_ != data_point.size())
116 std::cout <<
"Dimensions not the same" << std::endl;
118 data_.push_back(data_point);
123 initialClusterPoints();
135 auto cpy = y.cbegin();
136 for (
auto cpx = x.cbegin(), cpx_end = x.cend(); cpx != cpx_end; ++cpx, ++cpy) {
138 total += (diff * diff);
std::vector< ClusterId > PointsToClusters
void addDataPoint(Point &data_point)
float distance(const Point &x, const Point &y)
std::vector< Point > Centroids
ClustersToPoints clusters_to_points_
std::set< PointId > SetPoints
#define PCL_MAKE_ALIGNED_OPERATOR_NEW
Macro to signal a class requires a custom allocator.
void setClusterSize(unsigned int k)
This method sets the k-means cluster size.
PointsToClusters points_to_clusters_
Centroids get_centroids()
unsigned int num_dimensions_
std::vector< Point > data_
The cluster centroids.
unsigned int num_clusters_
The number of clusters.
std::vector< SetPoints > ClustersToPoints
std::vector< float > Point
void setInputData(std::vector< Point > &data)