engineeringkit.signal_processing#

Sampling, Fourier transforms, spectra, filtering and quantization.

Signals and systems from Fourier analysis to digital filtering and sampling.

class engineeringkit.signal_processing.Spectrum(frequency, magnitude)[source]#

Bases: object

Parameters:
  • frequency (ndarray)

  • magnitude (ndarray)

frequency: ndarray#
classmethod from_signal(x, fs)[source]#
magnitude: ndarray#
plot()[source]#
engineeringkit.signal_processing.alias_frequency(f, fs)[source]#

Alias frequency.

Parameters:
  • f (Hz) – Input in the units stated above.

  • fs (Hz) – Input in the units stated above.

Returns:

Hz.

Return type:

result

Notes

Assumptions, governing equations and validity limits are discussed in Signal processing: sampled energy, spectra and quantization. SI inputs are required; raw numbers carry no dimensional metadata.

engineeringkit.signal_processing.butterworth_highpass(order, cutoff, fs)[source]#

Butterworth highpass.

Parameters:
  • order (integer count) – Input in the units stated above.

  • cutoff (Hz) – Input in the units stated above.

  • fs (Hz) – Input in the units stated above.

Returns:

(numerator b, denominator a), dimensionless.

Return type:

result

Notes

Assumptions, governing equations and validity limits are discussed in Signal processing: sampled energy, spectra and quantization. SI inputs are required; raw numbers carry no dimensional metadata.

engineeringkit.signal_processing.butterworth_lowpass(order, cutoff, fs)[source]#

Butterworth lowpass.

Parameters:
  • order (integer count) – Input in the units stated above.

  • cutoff (Hz) – Input in the units stated above.

  • fs (Hz) – Input in the units stated above.

Returns:

(numerator b, denominator a), dimensionless.

Return type:

result

Notes

Assumptions, governing equations and validity limits are discussed in Signal processing: sampled energy, spectra and quantization. SI inputs are required; raw numbers carry no dimensional metadata.

engineeringkit.signal_processing.convolution(x, h, mode='full')[source]#

Convolution.

Parameters:
  • x (signal amplitude units) – Input in the units stated above.

  • h (filter coefficient sequences (dimensionless)) – Input in the units stated above.

  • mode (NumPy/SciPy option string) – Input in the units stated above.

Returns:

signal amplitude units.

Return type:

result

Notes

Assumptions, governing equations and validity limits are discussed in Signal processing: sampled energy, spectra and quantization. SI inputs are required; raw numbers carry no dimensional metadata.

engineeringkit.signal_processing.correlation(x, y, mode='full')[source]#

Correlation.

Parameters:
  • x (signal amplitude units) – Input in the units stated above.

  • y (signal amplitude units) – Input in the units stated above.

  • mode (NumPy/SciPy option string) – Input in the units stated above.

Returns:

signal amplitude units.

Return type:

result

Notes

Assumptions, governing equations and validity limits are discussed in Signal processing: sampled energy, spectra and quantization. SI inputs are required; raw numbers carry no dimensional metadata.

engineeringkit.signal_processing.db20(x)[source]#

Db20.

Parameters:

x (signal amplitude units) – Input in the units stated above.

Returns:

dB.

Return type:

result

Notes

Assumptions, governing equations and validity limits are discussed in Signal processing: sampled energy, spectra and quantization. SI inputs are required; raw numbers carry no dimensional metadata.

engineeringkit.signal_processing.dft(x)[source]#

Dft.

Parameters:

x (signal amplitude units) – Input in the units stated above.

Returns:

signal amplitude units.

Return type:

result

Notes

Assumptions, governing equations and validity limits are discussed in Signal processing: sampled energy, spectra and quantization. SI inputs are required; raw numbers carry no dimensional metadata.

engineeringkit.signal_processing.energy(x)[source]#

Energy.

Parameters:

x (signal amplitude units) – Input in the units stated above.

Returns:

squared amplitude units (no dt weighting).

Return type:

result

Notes

Assumptions, governing equations and validity limits are discussed in Signal processing: sampled energy, spectra and quantization. SI inputs are required; raw numbers carry no dimensional metadata.

engineeringkit.signal_processing.fft_frequencies(n, fs)[source]#

Fft frequencies.

Parameters:
  • n (integer count) – Input in the units stated above.

  • fs (Hz) – Input in the units stated above.

Returns:

Hz.

Return type:

result

Notes

Assumptions, governing equations and validity limits are discussed in Signal processing: sampled energy, spectra and quantization. SI inputs are required; raw numbers carry no dimensional metadata.

engineeringkit.signal_processing.filter_signal(b, a, x)[source]#

Filter signal.

Parameters:
  • b (filter coefficient sequences (dimensionless)) – Input in the units stated above.

  • a (filter coefficient sequences (dimensionless)) – Input in the units stated above.

  • x (signal amplitude units) – Input in the units stated above.

Returns:

signal amplitude units.

Return type:

result

Notes

Assumptions, governing equations and validity limits are discussed in Signal processing: sampled energy, spectra and quantization. SI inputs are required; raw numbers carry no dimensional metadata.

engineeringkit.signal_processing.fir_lowpass(numtaps, cutoff, fs, window='hamming')[source]#

Fir lowpass.

Parameters:
  • numtaps (integer count) – Input in the units stated above.

  • cutoff (Hz) – Input in the units stated above.

  • fs (Hz) – Input in the units stated above.

  • window (NumPy/SciPy option string) – Input in the units stated above.

Returns:

dimensionless FIR coefficients.

Return type:

result

Notes

Assumptions, governing equations and validity limits are discussed in Signal processing: sampled energy, spectra and quantization. SI inputs are required; raw numbers carry no dimensional metadata.

engineeringkit.signal_processing.frequency_response(b, a=1, worN=512, fs=6.283185307179586)[source]#

Frequency response.

Parameters:
  • b (filter coefficient sequences (dimensionless)) – Input in the units stated above.

  • a (filter coefficient sequences (dimensionless)) – Input in the units stated above.

  • worN (integer count or frequency array in fs units) – Input in the units stated above.

  • fs (Hz) – Input in the units stated above.

Returns:

(frequencies in fs units, complex gain).

Return type:

result

Notes

Assumptions, governing equations and validity limits are discussed in Signal processing: sampled energy, spectra and quantization. SI inputs are required; raw numbers carry no dimensional metadata.

engineeringkit.signal_processing.idft(X)[source]#

Idft.

Parameters:

X (complex DFT coefficients, same amplitude units) – Input in the units stated above.

Returns:

signal amplitude units.

Return type:

result

Notes

Assumptions, governing equations and validity limits are discussed in Signal processing: sampled energy, spectra and quantization. SI inputs are required; raw numbers carry no dimensional metadata.

engineeringkit.signal_processing.moving_average(x, n)[source]#

Moving average.

Parameters:
  • x (signal amplitude units) – Input in the units stated above.

  • n (integer count) – Input in the units stated above.

Returns:

signal amplitude units.

Return type:

result

Notes

Assumptions, governing equations and validity limits are discussed in Signal processing: sampled energy, spectra and quantization. SI inputs are required; raw numbers carry no dimensional metadata.

engineeringkit.signal_processing.nyquist_frequency(fs)[source]#

Nyquist frequency.

Parameters:

fs (Hz) – Input in the units stated above.

Returns:

Hz.

Return type:

result

Notes

Assumptions, governing equations and validity limits are discussed in Signal processing: sampled energy, spectra and quantization. SI inputs are required; raw numbers carry no dimensional metadata.

engineeringkit.signal_processing.power(x)[source]#

Power.

Parameters:

x (signal amplitude units) – Input in the units stated above.

Returns:

squared amplitude units (no dt weighting).

Return type:

result

Notes

Assumptions, governing equations and validity limits are discussed in Signal processing: sampled energy, spectra and quantization. SI inputs are required; raw numbers carry no dimensional metadata.

engineeringkit.signal_processing.power_spectral_density(x, fs)[source]#

Power spectral density.

Parameters:
  • x (signal amplitude units) – Input in the units stated above.

  • fs (Hz) – Input in the units stated above.

Returns:

(frequency [Hz], PSD [amplitude^2/Hz]).

Return type:

result

Notes

Assumptions, governing equations and validity limits are discussed in Signal processing: sampled energy, spectra and quantization. SI inputs are required; raw numbers carry no dimensional metadata.

engineeringkit.signal_processing.quantization_step(vmin, vmax, bits)[source]#

Step of a uniform mid-rise ADC with 2**bits bins over [vmin, vmax].

Parameters:
  • vmin (V (or consistent amplitude unit)) – Input in the units stated above.

  • vmax (V (or consistent amplitude unit)) – Input in the units stated above.

  • bits (integer count) – Input in the units stated above.

Returns:

signal amplitude units.

Return type:

result

Notes

Assumptions, governing equations and validity limits are discussed in Signal processing: sampled energy, spectra and quantization. SI inputs are required; raw numbers carry no dimensional metadata.

engineeringkit.signal_processing.quantize(x, vmin, vmax, bits)[source]#

Return mid-rise reconstruction levels, saturating outside ADC range.

There are exactly 2**bits levels located at bin centers. Inputs and output share units (typically volts). This models ideal uniform quantization.

Parameters:
  • x (signal amplitude units) – Input in the units stated above.

  • vmin (V (or consistent amplitude unit)) – Input in the units stated above.

  • vmax (V (or consistent amplitude unit)) – Input in the units stated above.

  • bits (integer count) – Input in the units stated above.

Returns:

signal amplitude units.

Return type:

result

Notes

Assumptions, governing equations and validity limits are discussed in Signal processing: sampled energy, spectra and quantization. SI inputs are required; raw numbers carry no dimensional metadata.

engineeringkit.signal_processing.rms(x)[source]#

Rms.

Parameters:

x (signal amplitude units) – Input in the units stated above.

Returns:

signal amplitude units.

Return type:

result

Notes

Assumptions, governing equations and validity limits are discussed in Signal processing: sampled energy, spectra and quantization. SI inputs are required; raw numbers carry no dimensional metadata.

engineeringkit.signal_processing.sampling_period(fs)[source]#

Sampling period.

Parameters:

fs (Hz) – Input in the units stated above.

Returns:

Return type:

result

Notes

Assumptions, governing equations and validity limits are discussed in Signal processing: sampled energy, spectra and quantization. SI inputs are required; raw numbers carry no dimensional metadata.

engineeringkit.signal_processing.sinc_reconstruct(samples, fs, t)[source]#

Sinc reconstruct.

Parameters:
  • samples (signal amplitude units) – Input in the units stated above.

  • fs (Hz) – Input in the units stated above.

  • t (s) – Input in the units stated above.

Returns:

signal amplitude units.

Return type:

result

Notes

Assumptions, governing equations and validity limits are discussed in Signal processing: sampled energy, spectra and quantization. SI inputs are required; raw numbers carry no dimensional metadata.

engineeringkit.signal_processing.snr_db(signal_values, noise)[source]#

Snr db.

Parameters:
  • signal_values (signal amplitude units) – Input in the units stated above.

  • noise (signal amplitude units) – Input in the units stated above.

Returns:

dB.

Return type:

result

Notes

Assumptions, governing equations and validity limits are discussed in Signal processing: sampled energy, spectra and quantization. SI inputs are required; raw numbers carry no dimensional metadata.

engineeringkit.signal_processing.windowed_spectrum(x, fs, window='hann')[source]#

Windowed spectrum.

Parameters:
  • x (signal amplitude units) – Input in the units stated above.

  • fs (Hz) – Input in the units stated above.

  • window (NumPy/SciPy option string) – Input in the units stated above.

Returns:

(frequency [Hz], unnormalized FFT magnitude).

Return type:

result

Notes

Assumptions, governing equations and validity limits are discussed in Signal processing: sampled energy, spectra and quantization. SI inputs are required; raw numbers carry no dimensional metadata.