channelize_poly#
Polyphase channelizer with a configurable number of channels
-
template<typename InType, typename FilterType>
inline auto matx::channelize_poly(const InType &in, const FilterType &f, index_t num_channels, index_t decimation_factor)# 1D polyphase channelizer
- Template Parameters:
InType – Type of input.
FilterType – Type of filter.
- Parameters:
in – Input operator that represents the input signal. The last dimension of this tensor is assumed to contain a single input signal with all preceding dimensions being batch dimensions that are channelized independently.
f – Filter operator that represents the filter coefficients. This must be a 1D tensor.
num_channels – Number of channels to create.
decimation_factor – Factor by which to downsample the input signal into the channels. Currently, the only supported value of decimation_factor is a value equal to num_channels. This corresponds to the maximally decimated, or critically sampled, case. It is also possible for decimation_factor to be less than num_channels, which corresponds to an oversampled case with overlapping channels, but this implementation does not yet support oversampled cases.
- Returns:
Operator representing the channelized signal. The output tensor rank is one higher than the input tensor rank. The first Rank-2 dimensions are all batch dimensions. The second-to-last dimension is the sample dimension and the last dimension is the channel dimension.
Examples#
// Channelize "a" into "num_channels" channels using filter "f" and "decimation_factor" decimation
(b = channelize_poly(a, f, num_channels, decimation_factor)).run(this->exec);