fc
- это желаемая частота половинной амплитуды .В фактическом фильтре, спроектированном firwin
, усиление при fc
будет приблизительно равным 0,5, при этом аппроксимация будет улучшаться по мере увеличения числа отводов.
Вот график, который показывает частотные характеристики нескольких нижних частотфильтры с firwin
и несколькими разными окнами.Сценарий, который генерирует график ниже.
![plot](https://i.stack.imgur.com/1IM1u.png)
import numpy as np
from scipy.signal import firwin, freqz
import matplotlib.pyplot as plt
# Desired half-amplitude cutoff
fc = 0.2
# Length of the FIR filter
numtaps = 51
windows = ['boxcar', 'hann', 'hamming', 'blackman']
for window in windows:
taps = firwin(numtaps, fc, window=window, scale=False)
w, h = freqz(taps, worN=8000)
plt.plot(w/np.pi, np.abs(h), label=window)
plt.legend(title='Window Function', loc='best', framealpha=1, shadow=True)
plt.axhline(0.5, alpha=0.3, color='k', linestyle='--', linewidth=1)
plt.grid(True)
plt.xlim(0, 2*fc)
plt.xlabel('Normalized frequency (1 = Nyquist)')
plt.ylabel('Gain')
plt.show()