sdr

Filtering

class sdr.FIR

Implements a finite impulse response (FIR) filter.

class sdr.IIR

Implements an infinite impulse response (IIR) filter.

Pulse shaping

sdr.gaussian(time_bandwidth: float, span: int, sps: int) ndarray

Returns a Gaussian pulse shape.

sdr.raised_cosine(alpha: float, span: int, sps: int) ndarray

Returns a raised cosine (RC) pulse shape.

sdr.root_raised_cosine(alpha: float, span: int, sps: int) ndarray

Returns a square root raised cosine (SRRC) pulse shape.

Resampling

class sdr.FarrowResampler

Implements a cubic Farrow arbitrary resampler.

Phase/time-locked loops

class sdr.ClosedLoopPLL

A class that defines the performance of a closed-loop PLL.

class sdr.DDS

Implements a direct digital synthesizer (DDS).

class sdr.LoopFilter

Implements a 2nd order, proportional-plus-integrator (PPI) loop filter.

class sdr.NCO

Implements a numerically-controlled oscillator (NCO).

Measurement

sdr.crest_factor(x: ArrayLike) float

Measures the crest factor of a signal.

sdr.papr(x: ArrayLike) float

Measures the peak-to-average power ratio (PAPR) of a signal.

Data manipulation

sdr.hexdump(data: ArrayLike | bytes, width: int = 16) str

Returns a hexdump of the specified data.

sdr.pack(x: ArrayLike, bpe: int, ...) ndarray

Packs a binary array into an array with multiple bits per element.

sdr.unpack(x: ArrayLike, bpe: int, ...) ndarray

Unpacks an array with multiple bits per element into a binary array.

Plotting

Configuration

sdr.plot.use_style()

Applies sdr’s default matplotlib rcParams.

Time-domain

sdr.plot.time_domain(x: ArrayLike, sample_rate: float = 1.0, **)

Plots a time-domain signal \(x[n]\).

Frequency-domain

sdr.plot.periodogram(x: ArrayLike, sample_rate: float = 1.0, ...)

Plots the estimated power spectral density \(P_{xx}\) of a time-domain signal \(x[n]\) using Welch’s method.

sdr.plot.spectrogram(x: ArrayLike, sample_rate: float = 1.0, ...)

Plots the spectrogram of a time-domain signal \(x[n]\) using Welch’s method.

Filter analysis

sdr.plot.filter(b: ArrayLike, a: ArrayLike = 1, ...)

Plots the frequency response \(H(e^{j\omega})\), impulse response \(h[n]\), step response \(s[n]\), and zeros and poles of the filter.

sdr.plot.frequency_response(b: ArrayLike, a: ArrayLike = 1, ...)

Plots the frequency response \(H(e^{j\omega})\) of the filter.

sdr.plot.group_delay(b: ArrayLike, a: ArrayLike = 1, ...)

Plots the group delay \(\tau_g(\omega)\) of the IIR filter.

sdr.plot.impulse_response(b: ArrayLike, a: ArrayLike = 1, ...)

Plots the impulse response \(h[n]\) of a filter.

sdr.plot.step_response(b: ArrayLike, a: ArrayLike = 1, ...)

Plots the step response \(s[n]\) of a filter.

sdr.plot.zeros_poles(b: ArrayLike, a: ArrayLike = 1, **kwargs)

Plots the zeros and poles of the filter.


Last update: Jul 16, 2023