【无标题】

在学习滤波器时,作者比较了使用MATLAB和Python获取的十阶巴特沃斯滤波器参数,发现两者一致。然而,应用滤波后,MATLAB的结果出现异常,与Python的滤波结果(-0.223053)显著不同。问题可能在于滤波过程或数据处理环节。
摘要由CSDN通过智能技术生成

巴特沃斯滤波器@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]
``
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值