18 #ifndef PIC_COMPUTER_VISION_NELDER_MEAD_OPT_POSITIVE_POLYNOMIAL_HPP 19 #define PIC_COMPUTER_VISION_NELDER_MEAD_OPT_POSITIVE_POLYNOMIAL_HPP 23 #include "../util/nelder_mead_opt_base.hpp" 24 #include "../util/math.hpp" 25 #include "../util/polynomial.hpp" 32 std::vector< float >
px,
py;
37 if(
px.size() ==
py.size()) {
38 this->px.assign(
px.begin(),
px.end());
39 this->py.assign(
py.begin(),
py.end());
43 float function(
float *x,
unsigned int n)
49 for(
auto i = 0; i <
px.size(); i++) {
50 float py_i = poly.
eval(
px[i]);
52 float delta_y = py_i -
py[i];
53 err += (delta_y * delta_y);
62 #ifndef PIC_DISABLE_EIGEN 68 std::vector< float > x, y;
70 for(
int i = 0; i < 100; i++) {
71 float tx = float(i) / 100.0f;
72 float ty = tx + (
getRandom(m()) * 0.01f - 0.05f);
73 float ty_sq = ty * ty;
85 float *out =
test.run(in, 3, 1e-12f, 100000);
87 printf(
"In: [%f %f %f]\nOut: [%f %f %f]\n", in[2], in[0], in[1], out[2], out[1], out[0]);
95 #endif // PIC_COMPUTER_VISION_NELDER_MEAD_OPT_POSITIVE_POLYNOMIAL_HPP float eval(float x)
eval
Definition: polynomial.hpp:166
std::vector< float > py
Definition: nelder_mead_opt_positive_polynomial.hpp:32
float * getArray(float *ret)
getArray
Definition: polynomial.hpp:148
Definition: polynomial.hpp:37
static void test()
Definition: nelder_mead_opt_positive_polynomial.hpp:64
The NelderMeadOptBase class.
Definition: nelder_mead_opt_base.hpp:31
std::vector< float > px
Definition: nelder_mead_opt_positive_polynomial.hpp:32
Definition: bilateral_separation.hpp:25
PIC_INLINE float getRandom(unsigned int n)
Random returns a number in [0, 2^32 - 1] to a float in [0, 1].
Definition: math.hpp:138
NelderMeadOptPositivePolynomial(std::vector< float > &px, std::vector< float > &py)
Definition: nelder_mead_opt_positive_polynomial.hpp:35
Definition: nelder_mead_opt_positive_polynomial.hpp:29
void fit(std::vector< float > &x, std::vector< float > &y, int n)
fit
Definition: polynomial.hpp:204