{ } Raw JSON

bundles / scipy latest / scipy / signal / _filter_design / besselap

function

scipy.signal._filter_design:besselap

source: /scipy/signal/_filter_design.py :5265

Signature

def   besselap ( N norm = phase * xp = None device = None )

Summary

Return (z,p,k) for analog prototype of an Nth-order Bessel filter.

Parameters

N : int

The order of the filter.

norm : {'phase', 'delay', 'mag'}, optional

Frequency normalization:

phase

The filter is normalized such that the phase response reaches its midpoint at an angular (e.g., rad/s) cutoff frequency of 1. This happens for both low-pass and high-pass filters, so this is the "phase-matched" case. [6]

The magnitude response asymptotes are the same as a Butterworth filter of the same order with a cutoff of Wn.

This is the default, and matches MATLAB's implementation.

delay

The filter is normalized such that the group delay in the passband is 1 (e.g., 1 second). This is the "natural" type obtained by solving Bessel polynomials

mag

The filter is normalized such that the gain magnitude is -3 dB at angular frequency 1. This is called "frequency normalization" by Bond. [1]

xp : array_namespace, optional

Optional array namespace. Should be compatible with the array API standard, or supported by array-api-compat. Default: numpy

device: any

optional device specification for output. Should match one of the supported device specification in xp.

Returns

z : ndarray[float64]

Zeros of the transfer function. Is always an empty array.

p : ndarray[complex128]

Poles of the transfer function.

k : float

Gain of the transfer function. For phase-normalized, this is always 1.

Notes

To find the pole locations, approximate starting points are generated [2] for the zeros of the ordinary Bessel polynomial [3], then the Aberth-Ehrlich method [4] [5] is used on the Kv(x) Bessel function to calculate more accurate zeros, and these locations are then inverted about the unit circle.

Array API Standard Support

besselap has experimental support for Python Array API Standard compatible backends in addition to NumPy. Please consider testing these features by setting an environment variable SCIPY_ARRAY_API=1 and providing CuPy, PyTorch, JAX, or Dask arrays as array arguments. The following combinations of backend and device (or other capability) are supported.

====================  ====================  ====================
Library               CPU                   GPU
====================  ====================  ====================
NumPy                 ✅                     n/a                 
CuPy                  n/a                   ✅                   
PyTorch               ✅                     ✅                   
JAX                   ✅                     ✅                   
Dask                  ✅                     n/a                 
====================  ====================  ====================

See dev-arrayapi for more information.

See also

bessel

Filter design function using this prototype

Aliases

  • scipy.signal.besselap

Referenced by

This package