离散时间采样IIR滤波系统中采样频率/截止频率到昼夜节律/采样的转换

2024-05-12 18:31:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python和Numpy/Scipy做一些数字过滤工作。

我正在使用scipy.signal.iirderesign生成我的滤波器系数,但它要求滤波器通带系数的格式我不熟悉

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

from here

我不熟悉数字滤波器(我来自硬件设计背景)。在模拟环境中,我将确定所需的坡度和3db下降点,并从中计算组件值。

在这种情况下,如何获取已知的采样率、所需的角频率和所需的滚动,并从中计算wp, ws值?

(这可能更适合math.stackexchange。我不确定)


Tags: andtofromnumpysignalws格式数字
2条回答

接受函数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。作为奈奎斯特频率π的一部分,这是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]。

如果采样率为fs,则奈奎斯特速率为fs/2。这表示您可以拥有的最高可表示频率,而无需锯齿。它也相当于文档中引用的规范化值1。因此,如果您正在设计一个角频率为fc的低通滤波器,您可以将其输入为fc/(fs/2)。

例如,fs=8000,所以fs/2=4000。你需要一个角频率为3100,截止频率为3300的低通滤波器。结果值为wp=fc/(fs/2)=3100/4000。阻带频率为3300/4000。

有道理吗?

相关问题 更多 >