FERS 0.1.0
The Flexible Extensible Radar Simulator
Loading...
Searching...
No Matches
fers_signal::IirFilter Class Referencefinal

Implements an Infinite Impulse Response (IIR) filter. More...

#include "dsp_filters.h"

+ Inheritance diagram for fers_signal::IirFilter:
+ Collaboration diagram for fers_signal::IirFilter:

Public Member Functions

 IirFilter (const RealType *denCoeffs, const RealType *numCoeffs, unsigned order) noexcept
 Constructs an IIR filter with given numerator and denominator coefficients and order.
 
 ~IirFilter () override=default
 
RealType filter (RealType sample) noexcept override
 Filters a single sample.
 
void filter (std::span< RealType > samples) noexcept override
 Filters a block of samples.
 

Detailed Description

Implements an Infinite Impulse Response (IIR) filter.

Definition at line 119 of file dsp_filters.h.

Constructor & Destructor Documentation

◆ IirFilter()

fers_signal::IirFilter::IirFilter ( const RealType denCoeffs,
const RealType numCoeffs,
unsigned  order 
)
noexcept

Constructs an IIR filter with given numerator and denominator coefficients and order.

Parameters
denCoeffsPointer to the denominator coefficients array.
numCoeffsPointer to the numerator coefficients array.
orderThe order of the filter.

Definition at line 322 of file dsp_filters.cpp.

322 :
323 _a(denCoeffs, denCoeffs + order), _b(numCoeffs, numCoeffs + order), _w(order, 0.0), _order(order)
324 {
325 }
math::Vec3 max

◆ ~IirFilter()

fers_signal::IirFilter::~IirFilter ( )
overridedefault

Member Function Documentation

◆ filter() [1/2]

RealType fers_signal::IirFilter::filter ( RealType  sample)
overridevirtualnoexcept

Filters a single sample.

Parameters
sampleThe sample to be filtered.
Returns
The filtered sample.

Implements fers_signal::DspFilter.

Definition at line 327 of file dsp_filters.cpp.

328 {
329 std::ranges::rotate(_w, _w.end() - 1);
330
331 _w[0] = sample;
332
333 for (unsigned j = 1; j < _order; ++j)
334 {
335 _w[0] -= _a[j] * _w[j];
336 }
337
338 return std::inner_product(_b.begin(), _b.end(), _w.begin(), 0.0);
339 }

References max.

◆ filter() [2/2]

void fers_signal::IirFilter::filter ( std::span< RealType samples)
overridevirtualnoexcept

Filters a block of samples.

Parameters
samplesSpan of samples to be filtered.

Implements fers_signal::DspFilter.

Definition at line 341 of file dsp_filters.cpp.

342 {
343 for (auto& sample : samples)
344 {
345 std::ranges::rotate(_w, _w.end() - 1);
346
347 _w[0] = sample;
348
349 for (unsigned j = 1; j < _order; ++j)
350 {
351 _w[0] -= _a[j] * _w[j];
352 }
353
354 sample = std::inner_product(_b.begin(), _b.end(), _w.begin(), 0.0);
355 }
356 }

References max.


The documentation for this class was generated from the following files: