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);