Что делает «аналоговый» параметр в scipy.signal.iirfilter и какова концепция аналоговой фильтрации в Python? - PullRequest
0 голосов
/ 01 октября 2019

Я недавно начал разрабатывать цифровые фильтры со scipy. Примеры, подобные этому такому вопросу , помогли мне понять scipy.signal.iirfilter, scipy.signal.butter, scipy.signal.cheby2 и друзей.

Однако я не до конца понимаю значение параметра analog в функции подписи выше. Два примера в документации SciPy также кажутся несовместимыми со строкой документа.

Примеры показывают схему аналогового фильтра

b, a = signal.iirfilter(17, [2*np.pi*50, 2*np.pi*200], rs=60, btype='band', analog=True, ftype='cheby2')

и эквивалентного цифровогофильтр

sos = signal.iirfilter(17, [50, 200], rs=60, btype='band', analog=False, ftype='cheby2', fs=2000, output='sos')

, который должен иметь такую ​​же частотную характеристику. У меня есть следующие вопросы:

  1. Согласно строке документа, когда analog=False, критические частоты Wn должны быть нормализованы по частоте Найквиста 0.5*fs. Так что в этом случае это должно быть [50/(0.5*2000), 200/(0.5*2000)], а не [50, 200] в моем понимании. Это ошибка в документации или что я здесь упускаю?
  2. Правильно ли, что я не могу использовать вывод для analog=True в качестве ввода для scipy.signal.lfilter, поскольку указанная функция предназначена только для цифровой фильтрации?
  3. Что я могу тогда использовать для вывода analog=True? Это просто для чистого анализа технических проблем, но не для реальной фильтрации данных? В моем понимании любые данные сигнала на моем компьютере являются цифровыми, то есть массивом / вектором, и в какой-то момент они были отобраны датчиком или АЦП. Таким образом, сама концепция «аналогового фильтра» в Python смущает меня.

В качестве примечания: мой опыт работы в области математики и информатики, а не в области электротехники или теории управления.

РЕДАКТИРОВАТЬ : Что касается вопроса 1, я проверил исходный код на Github , и кажется, что Wn автоматически делится на 0.5*fs, если fsпри условии. Таким образом, можно случайно разделить на 0.5*fs дважды, если не соблюдать осторожность. Я открою PR для обновления документации SciPy, чтобы отразить эту деталь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...