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

Implements a Finite Impulse Response (FIR) filter. More...

#include "dsp_filters.h"

+ Inheritance diagram for fers_signal::FirFilter:
+ Collaboration diagram for fers_signal::FirFilter:

Public Member Functions

 FirFilter (std::span< const RealType > coeffs)
 Constructs an FIR filter with the given coefficients.
 
 ~FirFilter () override=default
 
RealType filter (RealType) override
 Filters a single real-valued sample; FIR scalar filtering is unsupported.
 
void filter (std::span< RealType >) noexcept override
 Filters real-valued samples; FIR block filtering is unsupported for this overload.
 
void filter (std::vector< ComplexType > &samples) const
 Filters a block of complex samples.
 

Detailed Description

Implements a Finite Impulse Response (FIR) filter.

Definition at line 159 of file dsp_filters.h.

Constructor & Destructor Documentation

◆ FirFilter()

fers_signal::FirFilter::FirFilter ( std::span< const RealType coeffs)
explicit

Constructs an FIR filter with the given coefficients.

Parameters
coeffsSpan of filter coefficients.

Definition at line 167 of file dsp_filters.h.

167 :
168 _filter(coeffs.begin(), coeffs.end()), _w(coeffs.size()), _order(coeffs.size())
169 {
170 }

◆ ~FirFilter()

fers_signal::FirFilter::~FirFilter ( )
overridedefault

Member Function Documentation

◆ filter() [1/3]

RealType fers_signal::FirFilter::filter ( RealType  )
overridevirtual

Filters a single real-valued sample; FIR scalar filtering is unsupported.

Implements fers_signal::DspFilter.

Definition at line 175 of file dsp_filters.h.

175{ return 0; }

◆ filter() [2/3]

void fers_signal::FirFilter::filter ( std::span< RealType )
overridevirtualnoexcept

Filters real-valued samples; FIR block filtering is unsupported for this overload.

Implements fers_signal::DspFilter.

Definition at line 178 of file dsp_filters.h.

178{}

◆ filter() [3/3]

void fers_signal::FirFilter::filter ( std::vector< ComplexType > &  samples) const

Filters a block of complex samples.

Parameters
samplesSpan of complex samples to be filtered.

Definition at line 358 of file dsp_filters.cpp.

359 {
360 std::vector line(_order, ComplexType{0.0, 0.0});
361
362 for (auto& sample : samples)
363 {
364 line[0] = sample;
365 ComplexType result{0.0, 0.0};
366
367 result = std::transform_reduce(line.begin(), line.end(), _filter.begin(), ComplexType{0.0, 0.0},
368 std::plus<ComplexType>{},
369 [](const ComplexType& x, const RealType coeff) { return x * coeff; });
370
371 sample = result;
372
373 std::ranges::rotate(std::views::reverse(line), line.rbegin() + 1);
374 }
375 }
double RealType
Type for real numbers.
Definition config.h:27
std::complex< RealType > ComplexType
Type for complex numbers.
Definition config.h:35
math::Vec3 max

References max.


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