Фильтрация фильтром с бесконечным временем отклика осуществляется функцией w = If i l t er (В, А. х) . Здесь В = (Ф],Ь[1], •■•. Ь[п—т ] ) , А = <о[0],о[1],. . . , a[fc]), а х = (х[0], х[1], В результате получается сигнал у[п] вида a[0]y[n] = -a [ l]y [n - 1 ] ---------а[к]у[п - fc]+ +6[0]x[n] + 6[l]x[n - 1] + • • • + b[n - m ] x \ n - m} . Обычно полагают a[0] = 1. Отметим, что все параметры в If i l t er (B, А, х) должны быть массивами. Например, если В = 1, то на место этого параметра при вызове функции ставится массив float32([l.]). Эта функция годится и для осуществления FIR фильтрации. Для этого нужно положить Л = 1. Вместо функции If i l t e r (В, А, х) можно применять функцию f i l t f i l t . Обратим внимание на выбор знаков коэффициентов в (1.41). Эту формулу можно переписать в следующей форме 6[0]z[n] = —6[l]x[n —1] —------ 6[п —т]х[п - т]+ +a[0]y[n] + a[l]y[n—] Н------Һа[к]у[п - fc]. Это означает, что обратный фильтр к заданному получается заменой местами последовательностей А и В в функции Ifi l ter, а входом становится последовательность у[п\. 1.10.1. Проектирование фильтров Проектированию фильтров посвящена огромная литература. Речь идет о способах нахождения параметров А и В в (1.41) в зависимости от того, какими свойствами должен обладать фильтр. В данном пункте будет объяснено, как пользоваться готовыми функциями, помещенными в модуль scipy.signal, порождающими эти коэффициенты. Основная трудность заключается в том, что упомянутые функции предполагают нормализованную запись параметров. В конкретных условиях надо найти значения этих параметров в зависимости от частоты стробирования и желаемых частотных характеристик фильтра. Функции из модуля scipy.signal делятся на
RkJQdWJsaXNoZXIy MTExODQxMg==