我正在使用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