Skip to main content
`Ctrl`+`K`
scipy.signal.

# normalize

scipy.signal.normalize(b, a)

  Normalize numerator/denominator of a continuous-time transfer function.

  If values of b are too close to 0, they are removed. In that case, a BadCoefficients warning is emitted.

  Parameters:
    b: array_like

      Numerator of the transfer function. Can be a 2-D array to normalize multiple transfer functions.

    a: array_like

      Denominator of the transfer function. At most 1-D.

  Returns:
    num: array

      The numerator of the normalized transfer function. At least a 1-D array. A 2-D array if the input num is a 2-D array.

    den: 1-D array

      The denominator of the normalized transfer function.

  Notes

  Coefficients for both the numerator and denominator should be specified in descending exponent order (e.g., `s^2 + 3s + 5` would be represented as `[1, 3, 5]`).

  Array API Standard Support

  `normalize` 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 | ⚠️ no JIT | ⛔
  Dask | ⚠️ computes graph | n/a

  > See Support for the array API standard for more information.

  Examples

      >>> from scipy.signal import normalize

  Normalize the coefficients of the transfer function `(3*s^2 - 2*s + 5) / (2*s^2 + 3*s + 1)`:

      >>> b = [3, -2, 5]
      >>> a = [2, 3, 1]
      >>> normalize(b, a)
      (array([ 1.5, -1. ,  2.5]), array([1. , 1.5, 0.5]))

  A warning is generated if, for example, the first coefficient of b is 0. In the following example, the result is as expected:

      >>> import warnings
      >>> with warnings.catch_warnings(record=True) as w:
      ...     num, den = normalize([0, 3, 6], [2, -5, 4])

      >>> num
      array([1.5, 3. ])
      >>> den
      array([ 1. , -2.5,  2. ])

      >>> print(w[0].message)
      Badly conditioned filter coefficients (numerator): the results may be meaningless