Преобразование из частоты SamplerTe/Sutoff в PI-радийцы/выборку в дискретное время Sampled IIR-фильтрационную систему

StackOverflow https://stackoverflow.com/questions/4697235

Вопрос

Я работаю над выполнением некоторой работы цифрового фильтра с помощью Python и Numpy/Scipy.

Я использую scipy.signal.iirdesign для генерации моих коэффициентов фильтра, но это требует коэффициентов полосы фильтра в формате, с которым я не знаком

wp, ws : float

  Passband and stopband edge frequencies, normalized from 0 to 1 (1 corresponds 
      to pi radians / sample). 
  For example:
  Lowpass: wp = 0.2, ws = 0.3
  Highpass: wp = 0.3, ws = 0.2

(отсюда)

Я не знаком с цифровыми фильтрами (я прихожу из фона дизайна оборудования). В аналоговом контексте я бы определил желаемый наклон и точку вниз 3DB и рассчитывал значения компонентов из этого.

В этом контексте, как мне взять известную скорость дискретизации, желаемую угловую частоту и желаемый бросок, и вычислить wp, ws ценности из этого?

(Это может быть более подходящим для Math.stackexchange. Я не уверен)

Это было полезно?

Решение

Если ваша скорость отбора проб FS, скорость Nyquist составляет FS/2. Это представляет собой наивысшую репрезентативную частоту, которую вы можете иметь без псевдонима. Это также эквивалентно нормализованному значению 1, упомянутого документацией. Поэтому, если вы проектируете фильтр с низким проходом с угловой частотой FC, вы введете его в качестве FC / (FS / 2).

Например, у вас есть FS = 8000, так что FS/2 = 4000. Вам нужен фильтр с низким проходом с угловой частотой 3100 и частотой полосы остановки 3300. Полученные значения будут WP = FC/(FS/2) = 3100/4000. Частота остановки будет 3300/4000.

Иметь смысл?

Другие советы

Возьмите функцию x(t) = cos(2*pi*fa*t). Анкет Если мы отбираем выборку на частоте FS, функция выборки x(n*ts) = x(n/fs) = cos(2*pi*n*fa/fs). Анкет Максимальная частота перед псевдонимом (складывание) - это частота Nyquist fa = fs/2, которая нормализуется до (fs/2)/fs = 1/2. Анкет Нормализованная угловая частота 2*pi*1/2 rad/sample = pi rad/sample. Анкет Таким образом, сигнал x[n] = cos[pi*n] = [1,-1,1,-1,...].

Выборная версия данной частоты, такой как угловая частота 2*pi*fc rad/s было бы 2*pi*fc/fs rad/sample. Анкет Как доля Nyquist частоты PI, это 2*fc/fs = fc/(fs/2).

Несколько формул для жизни:

exp[j*w*n] = cos[w*n] + j*sin[w*n]
x_even[n] = 0.5*x[n] + 0.5*x[-n]
cos[w*n] = 0.5*exp[j*w*n] + 0.5*exp[-j*w*n]    # cos is even
x_odd[n] = 0.5*x[n] - 0.5*x[-n]
j*sin[w*n] = 0.5*exp[j*w*n] - 0.5*exp[-j*w*n]  # sin is odd

DFT ровного компонента (сумма косинусов) реального сигнала будет реальным и симметричным, в то время как DFT нечетного компонента (сумма синусов) будет воображаемым и антисимметричным. Таким образом, для реальных сигналов, таких как импульсный отклик типичного фильтра, спектр величины является симметричным, в то время как фазовый спектр является антисимметричным. Таким образом, вам нужно только указать фильтр для диапазона от 0 до PI, который нормализуется до [0,1].

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top