14 #include <yarp/os/LogStream.h>
15 #include <yarp/math/Math.h>
16 #include <yarp/math/SVD.h>
20 using namespace yarp::os;
21 using namespace yarp::sig;
22 using namespace yarp::math;
27 AWPolyEstimator::AWPolyEstimator(
unsigned int _order,
unsigned int _N,
const double _D) :
28 order(_order), N(_N), D(_D)
44 for (
unsigned int i=1; i<=
order; i++)
58 unsigned int i2=(
unsigned int)
std::min(
x.length(),
y.length());
70 for (
unsigned int i=i1; i<i2; i++)
76 for (
unsigned int j=1; j<=
order; j++)
85 if (R.rows()>=R.cols())
88 return pinv(R.transposed()).transposed()*_y;
104 size_t dim=
elemList[0].data.length();
105 Vector esteem(dim,0.0);
115 int delta=(int)L-(
int)
N;
123 for (
unsigned int j=1; j<
N; j++)
130 yWarning()<<
"Provided non-increasing time vector";
136 for (
unsigned int i=0; i<dim; i++)
139 for (
unsigned int j=0; j<
N; j++)
147 for (
unsigned int n=n1;
n<=n2;
n++)
156 for (
unsigned int k=
N-
n; k<
N; k++)
207 unsigned int i2=(
unsigned int)
std::min(
x.length(),
y.length());
221 for (
unsigned int i=i1; i<i2; i++)
229 double den=M*sum_xixi-sum_xi*sum_xi;
234 c[0]=(sum_yi*sum_xixi-sum_xi*sum_xiyi) / den;
237 c[1]=(M*sum_xiyi-sum_xi*sum_yi) / den;
virtual yarp::sig::Vector fit(const yarp::sig::Vector &x, const yarp::sig::Vector &y, const unsigned int n=0)
Redefine method to improve computation just for first-order estimator.
Basic element for adaptive polynomial fitting.
yarp::sig::Vector estimate()
Execute the algorithm upon the elements list, with the max deviation threshold given by D.
void feedData(const AWPolyElement &el)
Feed data into the algorithm.
virtual double eval(double x)
Evaluate regressor at certain point.
void reset()
Reinitialize the internal state.
virtual double getEsteeme()=0
Return the current estimation.
virtual yarp::sig::Vector fit(const yarp::sig::Vector &x, const yarp::sig::Vector &y, const unsigned int n=0)
Find the regressor which best fits in least square sense the last n data sample couples,...