24#ifndef TAPROOT_DISCRETE_FILTER_HPP_
25#define TAPROOT_DISCRETE_FILTER_HPP_
42template <u
int8_t SIZE,
typename T =
float>
55 std::array<T, SIZE> &naturalResponseCoefficients,
56 std::array<T, SIZE> &forcedResponseCoefficients)
57 : naturalResponseCoefficients(naturalResponseCoefficients),
58 forcedResponseCoefficients(forcedResponseCoefficients)
78 for (
int i = SIZE - 1;
i > 0;
i--)
80 forcedResponse[
i] = forcedResponse[
i - 1];
82 forcedResponse[0] = dat;
87 for (
int i = 0;
i < SIZE;
i++)
89 sum += forcedResponseCoefficients[
i] * forcedResponse[
i];
93 for (
int i = 0;
i < SIZE - 1;
i++)
95 sum -= naturalResponseCoefficients[
i + 1] * naturalResponse[
i];
98 sum /= naturalResponseCoefficients[0];
101 for (
int i = SIZE - 1;
i > 0;
i--)
103 naturalResponse[
i] = naturalResponse[
i - 1];
106 naturalResponse[0] = sum;
108 return naturalResponse[0];
119 naturalResponse.fill(0.0f);
120 forcedResponse.fill(0.0f);
125 std::array<T, SIZE> naturalResponseCoefficients;
126 std::array<T, SIZE> forcedResponseCoefficients;
127 std::array<T, SIZE> naturalResponse;
128 std::array<T, SIZE> forcedResponse;
DiscreteFilter class implements a discrete-time filter using the finite difference equation.
Definition discrete_filter.hpp:44
DiscreteFilter(std::array< T, SIZE > &naturalResponseCoefficients, std::array< T, SIZE > &forcedResponseCoefficients)
Constructor for the DiscreteFilter class.
Definition discrete_filter.hpp:54
T filterData(float dat)
Filters the input data using the finite difference equation.
Definition discrete_filter.hpp:76
T getLastFiltered()
Returns the last filtered value.
Definition discrete_filter.hpp:112
T reset()
Resets the filter's state to zero, keeps the coefficients
Definition discrete_filter.hpp:116
IUnit i
Definition dimensional_smooth_pid.hpp:2
Definition ballistics.cpp:29