Go to the documentation of this file.
10 #ifndef __SOT_FIRFILTER_HH__
11 #define __SOT_FIRFILTER_HH__
19 #include <dynamic-graph/all-signals.h>
20 #include <dynamic-graph/command-getter.h>
21 #include <dynamic-graph/command-setter.h>
22 #include <dynamic-graph/entity.h>
41 start = buf.size() - 1;
44 if (numel < buf.size()) {
60 assert((i < numel) &&
"Youre accessing an empty buffer");
61 size_t index = (start + i) % buf.size();
64 size_t size()
const {
return numel; }
76 using ::dynamicgraph::command::Command;
77 using ::dynamicgraph::command::Value;
79 template <
class sigT,
class coefT>
class SetElement :
public Command {
85 template <
class sigT,
class coefT>
class GetElement :
public Command {
92 using ::dynamicgraph::command::Getter;
93 using ::dynamicgraph::command::Setter;
95 template <
class sigT,
class coefT>
class FIRFilter :
public Entity {
98 return Entity::getClassName();
104 return "Finite impulse response filter\n"
106 " Provide the following sum in output signal:\n"
109 " y (n) = \\ c s (n-i) \n"
114 " - c_i are coefficients stored in an array\n"
115 " - N is the size of the array\n"
116 " - s is the input signal.\n";
121 : Entity(name),
SIN(NULL,
"sotFIRFilter(" + name +
")::input(T)::sin"),
123 "sotFIRFilter(" + name +
")::output(T)::sout") {
124 signalRegistration(
SIN <<
SOUT);
125 std::string docstring =
" Set element at rank in array of coefficients\n"
128 " - positive int: rank\n"
130 addCommand(
"setElement",
132 docstring =
" Get element at rank in array of coefficients\n"
135 " - positive int: rank\n"
138 addCommand(
"getElement",
140 docstring =
" Set number of coefficients\n"
143 " - positive int: size\n";
144 addCommand(
"setSize",
new Setter<FIRFilter, unsigned>(
147 docstring =
" Get Number of coefficients\n"
150 " - positive int: size\n";
151 addCommand(
"getSize",
new Getter<FIRFilter, unsigned>(
158 const sigT &in =
SIN.access(time);
162 size_t SIZE = std::min(data.
size(), coefs.size());
163 for (
size_t i = 0; i < SIZE; ++i) {
164 res += coefs[i] * data[i];
171 size_t s =
static_cast<size_t>(size);
177 return static_cast<unsigned int>(coefs.size());
180 void setElement(
const unsigned int &rank,
const coefT &coef) {
184 coefT
getElement(
const unsigned int &rank)
const {
return coefs[rank]; }
190 SignalTimeDependent<sigT, int>
SOUT;
193 std::vector<coefT> coefs;
198 using ::dynamicgraph::command::Command;
199 using ::dynamicgraph::command::Value;
200 using ::dynamicgraph::command::ValueHelper;
202 template <
class sigT,
class coefT>
204 const std::string &docstring)
207 boost::assign::list_of(Value::UNSIGNED)(ValueHelper<coefT>::TypeID),
213 std::vector<Value> values = getParameterValues();
214 unsigned int rank = values[0].value();
215 coefT coef = values[1].value();
220 template <
class sigT,
class coefT>
222 const std::string &docstring)
223 : Command(entity, boost::assign::list_of(Value::UNSIGNED), docstring) {}
228 std::vector<Value> values = getParameterValues();
229 unsigned int rank = values[0].value();
void setElement(const unsigned int &rank, const coefT &coef)
Definition: fir-filter.hh:180
coefT getElement(const unsigned int &rank) const
Definition: fir-filter.hh:184
GetElement(FIRFilter< sigT, coefT > &entity, const std::string &docstring)
Definition: fir-filter.hh:221
Definition: abstract-sot-external-interface.hh:17
void reset_capacity(size_t n)
Definition: fir-filter.hh:48
FIRFilter(const std::string &name)
Definition: fir-filter.hh:120
Definition: fir-filter.hh:34
Value doExecute()
Definition: fir-filter.hh:225
void push_front(const T &data)
Definition: fir-filter.hh:37
virtual sigT & compute(sigT &res, int time)
Definition: fir-filter.hh:157
static void reset_signal(sigT &, const sigT &)
Definition: fir-filter.hh:186
std::string getDocString() const
Definition: fir-filter.hh:103
Value doExecute()
Definition: fir-filter.hh:210
Definition: fir-filter.hh:79
static std::string getTypeName(void)
Definition: fir-filter.hh:100
SetElement(FIRFilter< sigT, coefT > &entity, const std::string &docstring)
Definition: fir-filter.hh:203
SignalPtr< sigT, int > SIN
Definition: fir-filter.hh:189
void resizeBuffer(const unsigned int &size)
Definition: fir-filter.hh:170
Definition: fir-filter.hh:85
void reset_capacity(size_t n, const T &el)
Definition: fir-filter.hh:53
unsigned int getBufferSize() const
Definition: fir-filter.hh:176
virtual const std::string & getClassName() const
Definition: fir-filter.hh:97
static const std::string CLASS_NAME
Definition: fir-filter.hh:101
T & operator[](size_t i)
Definition: fir-filter.hh:59
Definition: fir-filter.hh:73
SignalTimeDependent< sigT, int > SOUT
Definition: fir-filter.hh:190
size_t size() const
Definition: fir-filter.hh:64
virtual ~FIRFilter()
Definition: fir-filter.hh:155
circular_buffer()
Definition: fir-filter.hh:36