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
46template<typename Data_>
48 const std::size_t num_points,
49 const Data_* const x,
50 const PrecomputedWindows<Data_>& windows,
51 const Data_* const y,
52 Data_* const fitted,
53 Data_* robust_weights,
54 const Options<Data_>& opt
55) {
56 std::vector<Data_> rbuffer;
57 if (robust_weights == NULL) {
58 sanisizer::resize(rbuffer, num_points);
59 robust_weights = rbuffer.data();
60 }
61 internal::fit_trend(num_points, x, windows, y, fitted, robust_weights, opt);
62}
63
79template<typename Data_>
81 const std::size_t num_points,
82 const Data_* const x,
83 const Data_* const y,
84 Data_* const fitted,
85 Data_* const robust_weights,
86 const Options<Data_>& opt
87) {
88 const auto win = define_windows(num_points, x, opt);
89 compute(num_points, x, win, y, fitted, robust_weights, opt);
90}
91
98template<typename Data_>
99struct Results {
103 Results(const std::size_t n) :
104 fitted(sanisizer::cast<I<decltype(fitted.size())> >(n)),
105 robust_weights(sanisizer::cast<I<decltype(robust_weights.size())> >(n))
106 {}
107
111 std::vector<Data_> fitted;
112
116 std::vector<Data_> robust_weights;
117};
118
133template<typename Data_>
135 const std::size_t num_points,
136 const Data_* const x,
137 const Data_* const y,
138 const Options<Data_>& opt
139) {
140 Results<Data_> output(num_points);
141 compute(num_points, x, y, output.fitted.data(), output.robust_weights.data(), opt);
142 return output;
143}
144
145}
146
147#endif
Options for compute().
Namespace for LOWESS functions.
Definition compute.hpp:18
PrecomputedWindows< Data_ > define_windows(const std::size_t num_points, const Data_ *const x, const Options< Data_ > &opt)
Definition window.hpp:267
void compute(const std::size_t num_points, const Data_ *const x, const PrecomputedWindows< Data_ > &windows, const Data_ *const y, Data_ *const fitted, Data_ *robust_weights, const Options< Data_ > &opt)
Definition compute.hpp:47
Options for compute().
Definition Options.hpp:17
Precomputed windows for LOWESS smoothing.
Definition window.hpp:234
Results of the LOWESS smoother.
Definition compute.hpp:99
std::vector< Data_ > fitted
Definition compute.hpp:111
Results(const std::size_t n)
Definition compute.hpp:103
std::vector< Data_ > robust_weights
Definition compute.hpp:116