巴特沃斯滤波器@TOC
最近在学习滤波器的使用。遇到一个问题。
十阶巴特沃斯的参数获取:
分别利用matlab和python 获取十阶巴特沃斯的拟合参数,结果一致。
matlab代码
[b,a]=butter(10,0.107185)
b =
1.0e-05 *
列 1 至 3
0.000681572681938 0.006815726819376 0.030670770687190
列 4 至 6
0.081788721832507 0.143130263206887 0.171756315848264
列 7 至 9
0.143130263206887 0.081788721832507 0.030670770687190
列 10 至 11
0.006815726819376 0.000681572681938
a =
列 1 至 3
1.000000000000000 -7.848127973999700 27.906712108449302
列 4 至 6
-59.175942019721766 82.831434785005669 -79.940101441027565
列 7 至 9
53.851859930528903 -24.996453223154781 7.649046179545058
列 10 至 11
-1.393058744093878 0.114637377773011
python代码
[b, a] = signal.butter(10, 0.107185, 'lowpass')
a = [ 1. -7.84812797 27.90671211 -59.17594202 82.83143479
-79.94010144 53.85185993 -24.99645322 7.64904618 -1.39305874
0.11463738]
b = [6.81572682e-09 6.81572682e-08 3.06707707e-07 8.17887218e-07
1.43130263e-06 1.71756316e-06 1.43130263e-06 8.17887218e-07
3.06707707e-07 6.81572682e-08 6.81572682e-09]
问题
在进行滤波后,matlab结果不正常。
matlab
filter(b,a,x)
ans =
列 1 至 3
-0.000000001519907 -0.000000028885954 -0.000000271737642
列 4 至 6
-0.000001694195784 -0.000007909690897 -0.000029622463304
列 7 至 9
-0.000093073347451 -0.000253267952370 -0.000611219704395
列 10
-0.001332409495916
python
Signal_pro = signal.filtfilt(b, a, data, padlen=0)
[-0.22305294 -0.223053 -0.22305302 -0.22305303 -0.22305304 -0.22305304
-0.22305304 -0.22305304 -0.22305304 -0.22305304]
``