在离散时间采样的IIR滤波系统中,将采样率/截止频率转换为pi-弧度/样本。

4

我正在使用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。我不确定)

2个回答

6
如果您的采样率为fs,则奈奎斯特速率为fs/2。这表示您可以具有的最高可表示频率而不会出现混叠。它也等同于文档所指的标准化值1。因此,如果您正在设计一个带有截止频率fc的低通滤波器,则应将其输入为fc / (fs/2)。
例如,您有fs = 8000,因此fs/2 = 4000。您想要一个带有截止频率为3100和停止带频率为3300的低通滤波器。得到的值将是wp = fc / (fs/2) = 3100/4000。停止带频率将为3300/4000。
明白了吗?

有道理。不过我还是很好奇——π弧度到底从哪里来的? - Fake Name

2
取函数 x(t) = cos(2*pi*fa*t)。如果我们以频率fs进行采样,则采样函数为 x(n*ts) = x(n/fs) = cos(2*pi*n*fa/fs)。折叠前的最大频率是奈奎斯特频率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。作为奈奎斯特频率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]的区间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接