Participer au site avec un Tip
Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Vous êtes un professionnel et vous avez besoin d'une formation ? Coder avec une
Intelligence Artificielle
Voir le programme détaillé
Module « scipy.signal »

Fonction firwin - module scipy.signal

Signature de la fonction firwin

def firwin(numtaps, cutoff, *, width=None, window='hamming', pass_zero=True, scale=True, fs=None) 

Description

help(scipy.signal.firwin)

FIR filter design using the window method.

This function computes the coefficients of a finite impulse response
filter. The filter will have linear phase; it will be Type I if
`numtaps` is odd and Type II if `numtaps` is even.

Type II filters always have zero response at the Nyquist frequency, so a
ValueError exception is raised if firwin is called with `numtaps` even and
having a passband whose right end is at the Nyquist frequency.

Parameters
----------
numtaps : int
    Length of the filter (number of coefficients, i.e. the filter
    order + 1).  `numtaps` must be odd if a passband includes the
    Nyquist frequency.
cutoff : float or 1-D array_like
    Cutoff frequency of filter (expressed in the same units as `fs`)
    OR an array of cutoff frequencies (that is, band edges). In the 
    former case, as a float, the cutoff frequency should correspond 
    with the half-amplitude point, where the attenuation will be -6dB. 
    In the latter case, the frequencies in `cutoff` should be positive 
    and monotonically increasing between 0 and `fs/2`. The values 0 
    and `fs/2` must not be included in `cutoff`. It should be noted 
    that this is different than the behavior of `scipy.signal.iirdesign`, 
    where the cutoff is the half-power point (-3dB).
width : float or None, optional
    If `width` is not None, then assume it is the approximate width
    of the transition region (expressed in the same units as `fs`)
    for use in Kaiser FIR filter design. In this case, the `window`
    argument is ignored.
window : string or tuple of string and parameter values, optional
    Desired window to use. See `scipy.signal.get_window` for a list
    of windows and required parameters.
pass_zero : {True, False, 'bandpass', 'lowpass', 'highpass', 'bandstop'}, optional
    If True, the gain at the frequency 0 (i.e., the "DC gain") is 1.
    If False, the DC gain is 0. Can also be a string argument for the
    desired filter type (equivalent to ``btype`` in IIR design functions).

    .. versionadded:: 1.3.0
       Support for string arguments.
scale : bool, optional
    Set to True to scale the coefficients so that the frequency
    response is exactly unity at a certain frequency.
    That frequency is either:

    - 0 (DC) if the first passband starts at 0 (i.e. pass_zero
      is True)
    - `fs/2` (the Nyquist frequency) if the first passband ends at
      `fs/2` (i.e the filter is a single band highpass filter);
      center of first passband otherwise

fs : float, optional
    The sampling frequency of the signal. Each frequency in `cutoff`
    must be between 0 and ``fs/2``.  Default is 2.

Returns
-------
h : (numtaps,) ndarray
    Coefficients of length `numtaps` FIR filter.

Raises
------
ValueError
    If any value in `cutoff` is less than or equal to 0 or greater
    than or equal to ``fs/2``, if the values in `cutoff` are not strictly
    monotonically increasing, or if `numtaps` is even but a passband
    includes the Nyquist frequency.

See Also
--------
firwin2
firls
minimum_phase
remez

Examples
--------
Low-pass from 0 to f:

>>> from scipy import signal
>>> numtaps = 3
>>> f = 0.1
>>> signal.firwin(numtaps, f)
array([ 0.06799017,  0.86401967,  0.06799017])

Use a specific window function:

>>> signal.firwin(numtaps, f, window='nuttall')
array([  3.56607041e-04,   9.99286786e-01,   3.56607041e-04])

High-pass ('stop' from 0 to f):

>>> signal.firwin(numtaps, f, pass_zero=False)
array([-0.00859313,  0.98281375, -0.00859313])

Band-pass:

>>> f1, f2 = 0.1, 0.2
>>> signal.firwin(numtaps, [f1, f2], pass_zero=False)
array([ 0.06301614,  0.88770441,  0.06301614])

Band-stop:

>>> signal.firwin(numtaps, [f1, f2])
array([-0.00801395,  1.0160279 , -0.00801395])

Multi-band (passbands are [0, f1], [f2, f3] and [f4, 1]):

>>> f3, f4 = 0.3, 0.4
>>> signal.firwin(numtaps, [f1, f2, f3, f4])
array([-0.01376344,  1.02752689, -0.01376344])

Multi-band (passbands are [f1, f2] and [f3,f4]):

>>> signal.firwin(numtaps, [f1, f2, f3, f4], pass_zero=False)
array([ 0.04890915,  0.91284326,  0.04890915])



Vous êtes un professionnel et vous avez besoin d'une formation ? Mise en oeuvre d'IHM
avec Qt et PySide6
Voir le programme détaillé