This is documentation for an old release of SciPy (version 0.10.1). Read this page Search for this page in the documentation of the latest stable release (version 1.15.1).
scipy.signal.firwin
-
scipy.signal.firwin(numtaps, cutoff, width=None, window='hamming', pass_zero=True, scale=True, nyq=1.0)
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 rate, so a
ValueError exception is raised if firwin is called with numtaps even and
having a passband whose right end is at the Nyquist rate.
Parameters : | numtaps : int
Length of the filter (number of coefficients, i.e. the filter
order + 1). numtaps must be even if a passband includes the
Nyquist frequency.
cutoff : float or 1D array_like
Cutoff frequency of filter (expressed in the same units as nyq)
OR an array of cutoff frequencies (that is, band edges). In the
latter case, the frequencies in cutoff should be positive and
monotonically increasing between 0 and nyq. The values 0 and
nyq must not be included in cutoff.
width : float or None
If width is not None, then assume it is the approximate width
of the transition region (expressed in the same units as nyq)
for use in Kaiser FIR filter design. In this case, the window
argument is ignored.
window : string or tuple of string and parameter values
pass_zero : bool
If True, the gain at the frequency 0 (i.e. the “DC gain”) is 1.
Otherwise the DC gain is 0.
scale : bool
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);
- nyq (the Nyquist rate) if the first passband ends at
nyq (i.e the filter is a single band highpass filter);
center of first passband otherwise.
nyq : float
Nyquist frequency. Each frequency in cutoff must be between 0
and nyq.
|
Returns : | h : 1D 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 nyq, if the values in cutoff are not strictly
monotonically increasing, or if numtaps is even but a passband
includes the Nyquist frequency.
|
Examples
Low-pass from 0 to f:
Use a specific window function:
>>> firwin(numtaps, f, window='nuttall')
High-pass (‘stop’ from 0 to f):
>>> firwin(numtaps, f, pass_zero=False)
Band-pass:
>>> firwin(numtaps, [f1, f2], pass_zero=False)
Band-stop:
>>> firwin(numtaps, [f1, f2])
Multi-band (passbands are [0, f1], [f2, f3] and [f4, 1]):
>>>firwin(numtaps, [f1, f2, f3, f4])
Multi-band (passbands are [f1, f2] and [f3,f4]):
>>> firwin(numtaps, [f1, f2, f3, f4], pass_zero=False)