firwin#
- scipy.signal.firwin(numtaps, порог, *, ширина=None, window='hamming', pass_zero=True, scale=True, fs=None)[источник]#
Проектирование КИХ-фильтров с использованием оконного метода.
Эта функция вычисляет коэффициенты КИХ-фильтра. Фильтр будет иметь линейную фазу; он будет типа I, если numtaps нечётное и Тип II, если numtaps является чётным.
Фильтры типа II всегда имеют нулевой отклик на частоте Найквиста, поэтому возникает исключение ValueError, если firwin вызывается с numtaps чётная и имеющая полосу пропускания, правый конец которой находится на частоте Найквиста.
- Параметры:
- numtapsint
Длина фильтра (количество коэффициентов, т.е. порядок фильтра + 1). numtaps должно быть нечётным, если полоса пропускания включает частоту Найквиста.
- порогfloat или 1-D array_like
Частота среза фильтра (выражена в тех же единицах, что и fs) ИЛИ массив частот среза (то есть границ полосы). В первом случае, как число с плавающей запятой, частота среза должна соответствовать точке половинной амплитуды, где затухание будет -6 дБ. Во втором случае, частоты в порог должно быть положительным и монотонно возрастающим между 0 и fs/2. Значения 0 и fs/2 не должен быть включён в порог. Следует отметить, что это отличается от поведения
scipy.signal.iirdesign, где частота среза — это точка половинной мощности (-3 дБ).- ширинаfloat или None, опционально
Если ширина не является None, то предполагается, что это приблизительная ширина области перехода (выраженная в тех же единицах, что и fs) для использования в проектировании КИХ-фильтров Кайзера. В этом случае, window аргумент игнорируется.
- windowстрока или кортеж строки и значений параметров, опционально
Желаемое окно для использования. См.
scipy.signal.get_windowдля списка окон и требуемых параметров.- pass_zero{True, False, ‘bandpass’, ‘lowpass’, ‘highpass’, ‘bandstop’}, опционально
Если True, усиление на частоте 0 (т.е., «усиление постоянного тока») равно 1. Если False, усиление постоянного тока равно 0. Также может быть строковым аргументом для желаемого типа фильтра (эквивалентно
btypeв функциях проектирования БИХ-фильтров).Добавлено в версии 1.3.0: Поддержка строковых аргументов.
- scalebool, необязательно
Установите в True для масштабирования коэффициентов так, чтобы частотная характеристика была точно равна единице на определённой частоте. Эта частота равна либо:
0 (постоянная составляющая), если первая полоса пропускания начинается с 0 (т.е. pass_zero равен True)
fs/2 (частота Найквиста), если первый полосовой фильтр заканчивается на fs/2 (т.е. фильтр является однополосным фильтром верхних частот); центр первой полосы пропускания в противном случае
- fsfloat, опционально
Частота дискретизации сигнала. Каждая частота в порог должно быть между 0 и
fs/2. По умолчанию 2.
- Возвращает:
- h(numtaps,) ndarray
Коэффициенты длины numtaps КИХ-фильтр.
- Вызывает:
- ValueError
Если любое значение в порог меньше или равно 0 или больше или равно
fs/2, если значения в порог не являются строго монотонно возрастающими, или если numtaps чётное, но полоса пропускания включает частоту Найквиста.
Смотрите также
Примеры
Низкочастотный фильтр от 0 до f:
>>> from scipy import signal >>> numtaps = 3 >>> f = 0.1 >>> signal.firwin(numtaps, f) array([ 0.06799017, 0.86401967, 0.06799017])
Использовать конкретную оконную функцию:
>>> signal.firwin(numtaps, f, window='nuttall') array([ 3.56607041e-04, 9.99286786e-01, 3.56607041e-04])
Высокочастотный фильтр ('stop' от 0 до f):
>>> signal.firwin(numtaps, f, pass_zero=False) array([-0.00859313, 0.98281375, -0.00859313])
Полосовой:
>>> f1, f2 = 0.1, 0.2 >>> signal.firwin(numtaps, [f1, f2], pass_zero=False) array([ 0.06301614, 0.88770441, 0.06301614])
Полосно-заграждающий:
>>> signal.firwin(numtaps, [f1, f2]) array([-0.00801395, 1.0160279 , -0.00801395])
Многополосный (полосы пропускания: [0, f1], [f2, f3] и [f4, 1]):
>>> f3, f4 = 0.3, 0.4 >>> signal.firwin(numtaps, [f1, f2, f3, f4]) array([-0.01376344, 1.02752689, -0.01376344])
Многополосный (полосы пропускания [f1, f2] и [f3,f4]):
>>> signal.firwin(numtaps, [f1, f2, f3, f4], pass_zero=False) array([ 0.04890915, 0.91284326, 0.04890915])