Это означает, что параметр с фильтра, отвечающий частоте Ғо, равен с = 2 Ғ 0/ Ғ а. (1.42) Всегда должно быть выполнено неравенство 0 < с < 1. Заметим, что это неравенство согласуется с условиями теоремы Котельникова—Шеннона. Рассмотрим пример. Функция В = f i rwin(N, cutof f, pass_zero) создает FIR-фильтр. Здесь В - коэффициенты фильтра, N —число коэффициентов, cutof / —число или пара чисел, определяющих частоты вычисленные так. как указано выше. Если pass_zero = True (это означает, что через фильтр проходит сигнал с нулевой частотой), то параметр cu t o f f = с задает фильтр низких частот с частотой отсечения с, а если cu t o f f — [c i,02], то это режекториый фильтр, подавляющий сигналы с частотами из интервала cutof / . Если pass zero = False (сигнал с нулевой частотой через фильтр не проходит), то это фильтр высоких частот или полосовой фильтр. С помощью функции signal.freqz проще всего получить данные для построения графика передаточной функции фильтра. Выполнив команду w, h = f r eqz (B) , находим значения передаточной функции h(w). По умолчанию параметр w € [0,7г]. Чтобы разместить на этой оси истинные частоты, надо использовать команду рисования в виде plot(Fs * w j (2 * n),abs(h)) (см. скрипт). Например, если Fs = 22kHz , то частоте F0 = 700H z отвечает с = 0.064. # Рисование модуля # передаточной функции фильтра import numpy as np from s c ip y .s ig n a l import f irw in ,fr eq z from m a tp lo t lib .p yp lo t import p lo t В = f irw in (2 1 ,0 .064) F_s = 22050 w,h = freqz(B) p lo t (F _ s / (2 * np .p i)*w ,ab s(h ))
RkJQdWJsaXNoZXIy MTExODQxMg==