SigmaStudio的帮助文档里有写到General 1st-Order Filters Highpass 的系数计算公式为:
ω0 = 2*pi*f0/Fs
gainLinear = 10^(gain/20)
a1 = 2.7^-ω0
b0 = gainLinear * a1
b1 = -a1 * gainLinear
我用C按照上面的方法写了段计算程序,但结果却与SigmaStudio软件的计算结果不同,请帮我看看是哪里出错了?谢谢!
////(f0=1000,gain=0,fs=48000):
float omega,A;
omega=(float)(2*3.1415926535897932384626433832795*1000/48000);
A=pow(10,(0/20));
a1=pow(2.7,-omega);
b0=A*a1;
b1=-a1*A;
a1=-a1;
程序运行结果:
b0=0.878081
b1=-0.878081
a1=0.878081
SigmaStudio软件计算结果(f0=1000,gain=0,fs=48000):
Param Name: FistOrderSingle101
Param Value: 0.939040541648865
Param Name: FistOrderSingle111
Param Value: -0.939040541648865
Param Name: FistOrderSingle121
Param Value: 0.878081083297729
两个结果不同,请帮忙,谢谢!