5#ifndef RLS_DYN_MODEL_IDENT_RLS_H
6#define RLS_DYN_MODEL_IDENT_RLS_H
21template <
typename T,
int N>
23 static_assert((std::is_same<long double, T>::value ||
24 std::is_same_v<double, T> ||
25 std::is_same<float, T>::value),
26 "T must be: long double, double or float");
48 template <
int N1 = N, EnableIfB<(N1 > 0)> = 0>
68 template <
int N1 = N,
EnableIfB<(N1 == -1)> = 0>
74 w_(VectorXt::Zero(
n_)),
75 P_(MatrixXt::Identity(
n_,
n_)),
76 g_(VectorXt::Zero(
n_)),
90 g_.noalias() = (
P_ * x) / (
lam_ + (x.transpose() *
P_ * x).value());
91 P_.noalias() = (MatrixXt::Identity(
n_,
n_) -
g_ * x.transpose()) *
P_supp_;
104 if (w0.rows() ==
n_) {
107 throw std::invalid_argument(
"Wrong initial state dimension.");
114 if ((lam > 0) && (lam <= 1.0)) {
118 throw std::invalid_argument(
119 "Invalid forgetting factor (0 < lambda <= 1).");
129 throw std::invalid_argument(
130 "Invalid covariance matrix gain factor (delta > 0).");
156 w_ = VectorXt::Zero(
n_);
158 g_ = VectorXt::Zero(
n_);
const VectorXt & estimatedCoefficients() const noexcept
Definition RLSFilter.h:136
unsigned long long count_
Definition RLSFilter.h:42
T lam_inv_
Definition RLSFilter.h:35
RLSFilter(T lam, T delta)
Definition RLSFilter.h:49
const MatrixXt & P() const noexcept
Definition RLSFilter.h:148
void setForgettingFactor(double lam)
Definition RLSFilter.h:113
T err_
Definition RLSFilter.h:41
Matrix< T, N, N > MatrixXt
Definition RLSFilter.h:30
unsigned long long count() const noexcept
Definition RLSFilter.h:152
T delta_
Definition RLSFilter.h:36
VectorXt w_
Definition RLSFilter.h:37
Matrix< T, N, 1 > VectorXt
Definition RLSFilter.h:29
void update(const VectorXt &x, T y)
Definition RLSFilter.h:87
RLSFilter(unsigned int n, T lam, T delta)
Definition RLSFilter.h:69
void setEstimatedCoefficients(const VectorXt &w0)
Definition RLSFilter.h:103
VectorXt g_
Definition RLSFilter.h:40
void reset() noexcept
Reset filter to initial values.
Definition RLSFilter.h:155
MatrixXt P_
Definition RLSFilter.h:38
void setInitialCovarianceMatrixGain(double delta)
Definition RLSFilter.h:125
T lam_
Definition RLSFilter.h:34
unsigned int n_
Definition RLSFilter.h:33
MatrixXt P_supp_
Definition RLSFilter.h:39
T predict(const VectorXt &x) const noexcept
Definition RLSFilter.h:99
T a_priori_err() const noexcept
Definition RLSFilter.h:140
const VectorXt & gains() const noexcept
Definition RLSFilter.h:144
Definition RLSFilter.h:12
std::enable_if_t< B, int > EnableIfB
Definition RLSFilter.h:15