bundles / scipy latest / scipy / signal / _filter_design / besselap
function
scipy.signal._filter_design:besselap
source: build-install/usr/lib/python3.14/site-packages/scipy/signal/_filter_design.py:5318
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: intThe order of the filter.
norm: {'phase', 'delay', 'mag'}, optionalFrequency normalization:
phaseThe 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.
delayThe 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
magThe 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, optionalOptional array namespace. Should be compatible with the array API standard, or supported by array-api-compat. Default:
numpydevice: anyoptional 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: floatGain 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.
See also
- bessel
Filter design function using this prototype
Aliases
scipy.signal.besselap