WeightedLowess
A C++ library for LOWESS with various weighting schemes
Loading...
Searching...
No Matches
compute.hpp
Go to the documentation of this file.
1#ifndef WEIGHTEDLOWESS_COMPUTE_HPP
2#define WEIGHTEDLOWESS_COMPUTE_HPP
3
4#include <vector>
5#include <cstddef>
6
7#include "sanisizer/sanisizer.hpp"
8
9#include "fit.hpp"
10#include "Options.hpp"
11#include "utils.hpp"
12
18namespace WeightedLowess {
19
39template<typename Data_>
40void compute(const std::size_t num_points, const Data_* x, const PrecomputedWindows<Data_>& windows, const Data_* y, Data_* fitted, Data_* robust_weights, const Options<Data_>& opt) {
41 std::vector<Data_> rbuffer;
42 if (robust_weights == NULL) {
43 sanisizer::resize(rbuffer, num_points);
44 robust_weights = rbuffer.data();
45 }
46 internal::fit_trend(num_points, x, windows, y, fitted, robust_weights, opt);
47}
48
65template<typename Data_>
66void compute(const std::size_t num_points, const Data_* x, const Data_* y, Data_* fitted, Data_* robust_weights, const Options<Data_>& opt) {
67 auto win = define_windows(num_points, x, opt);
68 compute(num_points, x, win, y, fitted, robust_weights, opt);
69}
70
75template<typename Data_>
76struct Results {
80 Results(const std::size_t n) :
81 fitted(sanisizer::cast<decltype(internal::I(fitted.size()))>(n)),
82 robust_weights(sanisizer::cast<decltype(internal::I(robust_weights.size()))>(n))
83 {}
84
88 std::vector<Data_> fitted;
89
93 std::vector<Data_> robust_weights;
94};
95
111template<typename Data_>
112Results<Data_> compute(const std::size_t num_points, const Data_* x, const Data_* y, const Options<Data_>& opt) {
113 Results<Data_> output(num_points);
114 compute(num_points, x, y, output.fitted.data(), output.robust_weights.data(), opt);
115 return output;
116}
117
118}
119
120#endif
Options for compute().
Namespace for LOWESS functions.
Definition compute.hpp:18
PrecomputedWindows< Data_ > define_windows(const std::size_t num_points, const Data_ *x, const Options< Data_ > &opt)
Definition window.hpp:267
void compute(const std::size_t num_points, const Data_ *x, const PrecomputedWindows< Data_ > &windows, const Data_ *y, Data_ *fitted, Data_ *robust_weights, const Options< Data_ > &opt)
Definition compute.hpp:40
Options for compute().
Definition Options.hpp:17
Precomputed windows for LOWESS smoothing.
Definition window.hpp:234
Store the smoothing results.
Definition compute.hpp:76
std::vector< Data_ > fitted
Definition compute.hpp:88
Results(const std::size_t n)
Definition compute.hpp:80
std::vector< Data_ > robust_weights
Definition compute.hpp:93