用 Scipy firwin 编写 Python fir1 matlab

writing in Python fir1 matlab with Scipy firwin

我需要将信号处理 Matlab 包翻译成 Python。我被困在 fir1 函数中。 Fir1在Matlab中的描述: b = fir1(n,Wn) 使用 Hamming window 设计具有线性相位的 n 阶低通、带通或多频带 FIR 滤波器。过滤器类型取决于 Wn 的元素数量。

我试过了:

import scipy
b = scipy.signal.firwin(11,.5, window = "hamming", pass_zero = False)
-0.00506032, -0.  0.04194288, -0. -0.28848483, 0.49679547, -0.28848483,
 -0. 0.04194288, -0.  -0.00506032

在 Matlab 或 Octave 中:

   fir1(10,.5)
0.00505978  -0.00016286  -0.04194054   0.00066187   0.28847599   0.49581153   0.28847599    
-0.00016286   0.00505978

来自 Matlab 的 fir documentation,

If Wn is a scalar, then fir1 designs a lowpass or highpass filter with cutoff frequency Wn...

因此,似乎提供pass_zero = False可能与Matlab的结果不对应。相反,尝试 pass_zero='lowpass' 进行适当的比较。