Filters#

class SRRCFilter(rho: float, oversampling: int, N_h: int = 10, norm: bool = True, scale: float = 1.0, method: Literal['lfilter', 'time', 'fft'] = 'lfilter', is_mimo: bool = True, axis: int = -1, name: str = 'SRRCFilter')#

Implement a Square-Root Raised Cosine (SRRC) FIR filter.

This filter corresponds to a square-root raised cosine FIR filter. It has a rolloff factor specified by beta. The filter is truncated to span symbols, and each symbol period contains sps samples. The order of the filter, sps*span, must be even.

The filter energy is normalized to 1.

Attributes#

rhofloat

Roll-off factor for the filter.

N_hint

Length of the filter before oversampling.

oversamplingint

Oversampling factor for the filter.

scalefloat

Amplitude scaling factor for the filter.

methodLiteral[“auto”, “time”, “fft”]

Method for filter design (“auto”, “time”, “fft”).

H(NFFT)#

Frequency response for fft method

class BWFilter(wn: float, is_mimo: bool = False)#

Implements a frequency domain low-pass brick wall filter.

This filter attenuates frequencies above a specified critical frequency. The critical frequency is normalized from 0 to 1.

Signal Model#

The filter operates in the frequency domain by applying a brick wall (ideal) low-pass filter to the input signal. The filter’s transfer function \(H\) is defined as:

\[\begin{split}H[k] = \begin{cases} 1 & \text{if } |w[k]| \leq w_n \\ 0 & \text{if } |w[k]| > w_n \end{cases}\end{split}\]

where:

  • \(w[k]\) is the angular frequency of the k-th component.

  • \(w_n\) is the critical angular frequency.

The filtering process involves:

  1. Computing the Fast Fourier Transform (FFT) of the input signal.

  2. Applying the brick wall filter in the frequency domain.

  3. Performing the inverse FFT to obtain the filtered time-domain signal.

Attributes#

wnfloat

The critical frequency or frequencies. Values should be normalized from 0 to 1, where 1 is the Nyquist frequency. This determines the cutoff point for the filter.