33template <
typename T,
size_t N>
44 for (
size_t i = 0;
i <
N; ++
i)
55 for (
size_t i = 0;
i <
N; ++
i)
97 const std::vector<T> &
values,
141template <
typename T,
size_t N>
146 throw std::runtime_error(
147 "add_dimension: size mismatch between points and new dimension data");
149 std::vector<Point<T, N + 1>>
result;
152 for (
size_t i = 0;
i <
points.size(); ++
i)
154 std::array<T, N + 1> coords{};
155 std::copy(
points[
i].coords.begin(),
points[
i].coords.end(), coords.begin());
157 result.emplace_back(coords);
179template <
typename T,
size_t N>
182 const std::vector<int> &
labels)
185 throw std::runtime_error(
"extract_clusters: mismatch between points and labels size");
195 for (
size_t i = 0;
i <
points.size(); ++
i)
244template <
typename T,
size_t N>
251 for (std::size_t
i = 1;
i <
N; ++
i)
254 throw std::invalid_argument(
"All component vectors must have the same size");
258 for (std::size_t
i = 0;
i <
count; ++
i)
260 for (std::size_t
j = 0;
j <
N; ++
j)
332 p.coords[
dim] =
T(0);
360template <
typename T,
size_t N>
366 for (
size_t i = 0;
i <
N; ++
i)
Definition dbscan_clustering.hpp:11
std::vector< Point< T, N > > random(size_t count, const std::array< std::pair< T, T >, N > &axis_ranges, std::optional< unsigned int > seed=std::nullopt)
Generates a specified number of uniformly distributed random points in N-dimensional space.
Definition random.hpp:66
void normalize_points(std::vector< Point< T, N > > &points)
Normalize the coordinates of a set of points along each axis to the range [0, 1].
Definition utils.hpp:298
bool save_vector_to_csv(const std::string &filename, const std::vector< T > &values, bool write_header=true, const std::string &header_name="value")
Save a 1D vector of values to a CSV file.
Definition utils.hpp:96
std::vector< Point< T, N > > merge_by_dimension(const std::array< std::vector< T >, N > &components)
Reconstructs a list of N-dimensional points from N separate coordinate vectors.
Definition utils.hpp:245
bool save_points_to_csv(const std::string &filename, const std::vector< Point< T, N > > &points, bool write_header=true)
Save a set of N-dimensional points to a CSV file.
Definition utils.hpp:34
std::vector< Point< T, N+1 > > add_dimension(const std::vector< Point< T, N > > &points, const std::vector< T > &new_dimension)
Add a new dimension to a set of points.
Definition utils.hpp:142
std::vector< std::vector< Point< T, N > > > extract_clusters(const std::vector< Point< T, N > > &points, const std::vector< int > &labels)
Extract clusters of points given DBSCAN (or any clustering) labels.
Definition utils.hpp:180
std::array< std::vector< T >, N > split_by_dimension(const std::vector< Point< T, N > > &points)
Rearranges a list of N-dimensional points into N separate coordinate vectors.
Definition utils.hpp:361
A fixed-size N-dimensional point/vector class.
Definition point.hpp:39