dsplib 1.1.0
C++ DSP library for MATLAB-like coding
Loading...
Searching...
No Matches
subband.h
1#pragma once
2
3#include <dsplib/array.h>
4
5#include <cassert>
6#include <memory>
7
8namespace dsplib {
9
10class ChannelizerImpl;
11
12//TODO: use decim factor in matlab style (M/D)
13
21{
22public:
23 Channelizer(const Channelizer&) = delete;
24
32 explicit Channelizer(span_real filter, int num_bands, int decim_factor);
33
41 explicit Channelizer(std::shared_ptr<const arr_real> filter, int num_bands, int decim_factor);
42
50 explicit Channelizer(int num_bands, int decim_factor, int num_taps);
51
57 [[nodiscard]] arr_cmplx process(span_real x);
58
59 arr_cmplx operator()(span_real x) {
60 return this->process(x);
61 }
62
67 [[nodiscard]] int frame_len() const noexcept;
68
69private:
70 std::shared_ptr<ChannelizerImpl> d_;
71};
72
73class ChannelSynthesizerImpl;
74
84{
85public:
87
95 explicit ChannelSynthesizer(span_real filter, int num_bands, int decim_factor);
96
104 explicit ChannelSynthesizer(std::shared_ptr<const arr_real> filter, int num_bands, int decim_factor);
105
113 explicit ChannelSynthesizer(int num_bands, int decim_factor, int num_taps);
114
120 [[nodiscard]] arr_real process(span_cmplx x);
121
122 arr_real operator()(span_cmplx x) {
123 return this->process(x);
124 }
125
130 [[nodiscard]] int frame_len() const noexcept;
131
132private:
133 std::shared_ptr<ChannelSynthesizerImpl> d_;
134};
135
136} // namespace dsplib
Polyphase FFT synthesis filter bank.
Definition subband.h:84
ChannelSynthesizer(int num_bands, int decim_factor, int num_taps)
Construct ChannelSynthesizer.
int frame_len() const noexcept
Processing frame size.
ChannelSynthesizer(span_real filter, int num_bands, int decim_factor)
Construct ChannelSynthesizer.
arr_real process(span_cmplx x)
Filter bank processing (synthesis)
ChannelSynthesizer(std::shared_ptr< const arr_real > filter, int num_bands, int decim_factor)
Construct ChannelSynthesizer.
Polyphase FFT analysis filter bank.
Definition subband.h:21
Channelizer(span_real filter, int num_bands, int decim_factor)
Construct Channelizer.
Channelizer(int num_bands, int decim_factor, int num_taps)
Construct Channelizer.
int frame_len() const noexcept
Processing frame size.
arr_cmplx process(span_real x)
Filter bank processing (analysis)
Channelizer(std::shared_ptr< const arr_real > filter, int num_bands, int decim_factor)
Construct Channelizer.
Definition span.h:295