Gazebo Math

API Reference

6.15.1
gz/math/Kmeans.hh
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2014 Open Source Robotics Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16 */
17 #ifndef GZ_MATH_KMEANS_HH_
18 #define GZ_MATH_KMEANS_HH_
19 
20 #include <vector>
21 #include <gz/math/Vector3.hh>
22 #include <gz/math/Helpers.hh>
23 #include <gz/math/config.hh>
24 
25 namespace ignition
26 {
27  namespace math
28  {
29  // Inline bracket to help doxygen filtering.
30  inline namespace IGNITION_MATH_VERSION_NAMESPACE {
31  //
32  // Forward declare private data
33  class KmeansPrivate;
34 
40  class IGNITION_MATH_VISIBLE Kmeans
41  {
44  public: explicit Kmeans(const std::vector<Vector3d> &_obs);
45 
47  public: virtual ~Kmeans();
48 
51  public: std::vector<Vector3d> Observations() const;
52 
56  public: bool Observations(const std::vector<Vector3d> &_obs);
57 
61  public: bool AppendObservations(const std::vector<Vector3d> &_obs);
62 
74  public: bool Cluster(int _k,
75  std::vector<Vector3d> &_centroids,
76  std::vector<unsigned int> &_labels);
77 
81  private: unsigned int ClosestCentroid(const Vector3d &_p) const;
82 
84  private: KmeansPrivate *dataPtr;
85  };
86  }
87  }
88 }
89 
90 #endif
Definition: gz/math/AdditivelySeparableScalarField3.hh:27
STL class.
std::vector< Vector3d > Observations() const
Get the observations to cluster.
bool Cluster(int _k, std::vector< Vector3d > &_centroids, std::vector< unsigned int > &_labels)
Executes the k-means algorithm.
The Vector3 class represents the generic vector containing 3 elements. Since it's commonly used to ke...
Definition: gz/math/Vector3.hh:41
virtual ~Kmeans()
Destructor.
K-Means clustering algorithm. Given a set of observations, k-means partitions the observations into k...
Definition: gz/math/Kmeans.hh:40
bool AppendObservations(const std::vector< Vector3d > &_obs)
Add observations to the cluster.
Kmeans(const std::vector< Vector3d > &_obs)
constructor