Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 信号带通误差:数字滤波器临界频率必须为0<;Wn<;1._Python_Scipy_Bandpass Filter - Fatal编程技术网

Python 信号带通误差:数字滤波器临界频率必须为0<;Wn<;1.

Python 信号带通误差:数字滤波器临界频率必须为0<;Wn<;1.,python,scipy,bandpass-filter,Python,Scipy,Bandpass Filter,我一直在尝试使用scipy的butter函数,当我尝试获得低通系数时,它工作得很好: from scipy import signal [b, a] = signal.butter(10, 0.3) 我严格地想为0.5Hz-5Hz创建一个带通,但当我尝试在以下代码中获得带通系数时,它给了我一个错误:ValueError:数字滤波器临界频率必须为0

我一直在尝试使用scipy的butter函数,当我尝试获得低通系数时,它工作得很好:

from scipy import signal
[b, a] = signal.butter(10, 0.3)
我严格地想为0.5Hz-5Hz创建一个带通,但当我尝试在以下代码中获得带通系数时,它给了我一个错误:
ValueError:数字滤波器临界频率必须为0

from scipy import signal

[b, a] = signal.butter(2, [0.5,5], btype='bandpass')

我确实发现了以下stackoverflow,但我仍然不确定该问题,并且我遵循了文档中关于使用signal.butter函数的要求。

默认情况下,对于数字滤波器,
Wn
的值必须表示为采样率的分数,即采样率的一半。您可以自己缩放这些值,也可以通过提供
fs
参数来指定采样率,如下例所示

In [36]: from scipy import signal

In [37]: order = 2

In [38]: fs = 128.0  # Sample rate, in Hz                                             

In [39]: Wn = [0.5, 5.0]  # Filter cutoff frequencies, in Hz                                      

In [40]: b, a = signal.butter(order, Wn, btype='bandpass', fs=fs)                                     

In [41]: b                                                                                                           
Out[41]: array([ 0.01051921,  0.        , -0.02103843,  0.        ,  0.01051921])

In [42]: a                                                                                                           
Out[42]: array([ 1.        , -3.67848002,  5.09032297, -3.14352142,  0.73170972])