请问sigmastudio帮助中使用bandpass滤波器计算参数与在matlab中得到的参数不一致。

参照sigmastudio帮助中使用bandpass滤波器计算参数,如下链接中的带通部分

wiki.analog.com/.../generaleq2ndorder

我在Matlab中尝试代码实现如下,与代码末尾的Matlab butter()函数计算的滤波器系数对照,结果并不一致。

clear;

fs = 48000;        

% f1 Low cutoff   f2 High cutoff
f2 = 11000;
f1 = 9000;

% center frequency
f0 = sqrt(f1*f2) 

% Bandwidth is Bandwidth_in_octaves
Bandwidth_in_octaves  = log(f2/f1)/log(2)

gainLinear = 1 ; % (Vo/Vi)


W0 = 2 * pi * f0 / fs


Alpha = sin(W0) * sinh(log(2)/2 * Bandwidth_in_octaves * W0 / sin(W0))
a0 = 1 + Alpha
a1 = -2 * cos(W0)
a2 = 1 - Alpha
b0 = Alpha * gainLinear
b1 = 0
b2 = -Alpha * gainLinear
 
% 归一化a0
 numerator_B =  [b0,b1,b2]/a0
 denominator_A = [a0,a1,a2]/a0
 

% Matlab butter()
 [b,a] = butter(1,[f1/(fs/2),f2/(fs/2)],'bandpass')

结果分别是:

请教计算系数的结果不一致的原因是什么呢?

另外将两组参数计算结果分别输入sigmastudio做了截图,最下面滤波器采用中心频点加bandwidth模拟,上面两个输入两组参数计算结果。发现从频响曲线上看误差很小,请教应该如何理解?是应该理解为可接受的误差或是哪一种算正确?

非常感谢各位指导,谢谢!