滤波器系数计算——C语言_第1页
滤波器系数计算——C语言_第2页
滤波器系数计算——C语言_第3页
滤波器系数计算——C语言_第4页
已阅读5页,还剩5页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一阶滤波器系数计算frequency = Cutoff frequencygain = Linear Gainfs = Sample RatePI =低通A1 = Pow(2.7,(-2 * PI * frequency/fs)B0 = gain * (1.0 - A1)B1=0高通A1 = Pow(2.7,(-2 * PI * frequency/fs)B1 = (1.0 + A1) * 0.5 * gainB0 = -B1全通A1 = Pow(2.7,(-2 * PI * frequency/fs)B0 = -gain * A1B1 = gain二阶 IIR 滤波器系数计算This doc

2、ument shows how to calculate B0, B1, B2, A1, and A2 for various IIR filter types Sin = sine, Cos= cosine, Tan = tangent, Sinh = hyperbolic sine, Log = base 10 logarithmParametric EQ CalculationValues from Control:boost(boost of filter)frequency(center frequency)Q (Q of filter; must be greater than o

3、r equal to 0.01)gain(linear gain applied to the signal)Fs (sample rate of project)In the case that boost = 0,gainlinear = 10B0 = gainlinearB1=0B2=0A1=0A2=0If boost is not 0,(gain / 20)Create 5 new variables: a0, omega, sn, cs, alpha, AxAx = 10(boost / 40)omega = 2 * PI * frequency / Fssn = Sin(omega

4、)cs = Cos(omega)alpha = sn / (2 * (Q)a0 = 1 + (alpha / Ax)A1= -( 2 * cs) / a0A2= (1 - (alpha / Ax) / a0gainlinear = 10(gain / 20)/ a0B0 = (1 + (alpha * Ax) * gainlinearB1 = -( 2 * cs) * gainlinearB2 = (1 - (alpha * Ax) * gainlinearTone ControlValues from Control:Freq_T (treble cutoff frequency)Boost

5、_T (treble boost)Freq_B (bass cutoff frequency)Boost_B (bass boost)Fs (sample rate of project)Boost_T = 10Boost_B = 10(Boost_T / 20)(Boost_B / 20)A_T = Tan(PI * Freq_T / Fs)A_B = Tan(PI * Freq_B / Fs)Knum_T = 2 / (1 + (1 / Boost_T)Kden_T = 2 / (1 + Boost_T)Knum_B = 2 / (1 + (1 / Boost_B)Kden_B = 2 /

6、 (1 + Boost_B)a10= A_T + Kden_Tb10= A_T + Knum_Ta11= A_T - Kden_Tb11= A_T - Knum_Ta20= (A_B * Kden_B) + 1b20= (A_B * Knum_B) - 1a21= (A_B * Kden_B) - 1b21= (A_B * Knum_B) + 1a0 = a10 * a20A1= (a10 * a21) + (a11 * a20) / a0A2= a11 * a21/ a0gainlinear = 10(cell_gain / 20)B0 = (b10 * b20) / a0 * gainli

7、nearB1 = (b10 * b21) + (b11 * b20) / a0 * gainlinearB2 = (b11 * b21) / a0 * gainlinearFor double 1st Order Filter cellsst Order Filters, simply use 2 Cascaded 1All PassValues from control:frequency(center frequency)Q (Q of filter)gain1(linear gain)fs (sample rate of project)gain1 = 10(gain / 20)omeg

8、a = 2 * PI * frequency / fssins = Sin(omega)coss = Cos(omega)alpha = sins / (2 * Q)norm = 1 + alphaB0 = gain1 * (1 - alpha) / normB1 = gain1 * ( - 2 * coss) / normB2 = gain1 * (1 + alpha) / normA1 = - 2 * coss / normA2 = (1 - alpha) / normNotch FilterValues from control:frequency1(center frequency)Q

9、 (Q of filter)g (gain)fs(sample rate of project)omega = frequency1 * 2 * System.PI / fsdeltaomega = omega / Qb = 1 / (1 + Tan(deltaomega / 2)(g / 20)gain = 10B0 = gain * bB1 = gain * ( - 2 * b * Cos(omega)B2 = gain * bA1 = - 2 * b * Cos(omega)A2 = (2 * b - 1)Chebyshev Low PassValues from control:fre

10、quency (cutoff frequency; must be 1 Hz or greater)gain(linear gain)ripple(ripple of filter; must be 0.1 or greater)Fs (sample rate of project)wp = (2 * PI * frequency) / FsOmegap = Tan(wp / 2)epass = (10(0.1 * ripple)- 1)0.52+1)0.5alpha = (0.5) * Log(1 / epass + (1 / (epassOmega0 = Omegap * Sinh(alp

11、ha);theta = (PI / 4) * 3Omega1 = Omegap * Sin(theta)H0 = (1 / (1 + epass2 ) 0.52 + Omega1 2Den = 1(2 * Omega0 * Cos(theta) + Omega0G = (Omega02 + Omega1 2) / DenA1 = (2 * (Omega02 + Omega1 2 - 1) / Den2 + Omega1 2 ) / DenA2 = (1 + (2 * Omega0 * Cos(theta) + Omega0(gain / 20)B0=H0*G*10B1=B0*2B2=B0Che

12、byshevHighPassValues from control:frequency(cutoff frequency; must be 1 Hz or greater)gain (linear gain)ripple(ripple of filter; must be 0.1 or greater)Fs (sample rate of project)wp = (2 * PI * frequency) / FsOmegap = 1 / Tan(wp / 2)epass = (10(0.1 * ripple)- 1)0.5alpha = (0.5) * Log(1 / epass + (1

13、/ (epassOmega0 = Omegap * Sinh(alpha)theta = (PI / 4) * 3Omega1 = Omegap * Sin(theta)H0= (1 / (1 + (epass2)0.5Den = 1 - 2 * Omega0 * Cos(theta) + (Omega0G = (Omega02) + (Omega12 ) / DenA1= ( - 2 * (Omega02) + (Omega1 2 ) - 1) / DenA2= (1 + 2 * Omega0 * Cos(theta) + (Omega0B0=H0*G*(10(gain / 20)B1=-B

14、0*2B2=B02) + 1)0.52 ) + (Omega1 2)2 ) + (Omega12) / DenLinkwitz-Riley12 dB/oct = 2 cascaded 1st order butterworths (2 biquads)frequency(the cutoff frequency)First Ordertype(the type of filter, can be lowpass, highpass, or allpass)g (the linear gain)fs (the sample rate of the project)1stOrder Butterw

15、orthgain = (10(g / 20) )omega, sn, cs, alpha, a0omega = 2 * PI * frequency / fssn = Sin(omega)cs = Cos(omega)a0 = sn + cs + 1;For a First OrderlowpassA1 = (sn - cs - 1) / a0B0 = gain * sn / a0B1 = gain * sn / a0For a First OrderhighpassA1 = (sn - cs - 1) / a0B0 = gain * (1 + cs) / a0B1 = - gain * (1

16、 + cs) / a0For a First Orderallpass( - 2 * PI * frequency / fs)A1 = (2.7)B0 = - gain * A1B1 = gainLinkwitz-Riley24 dB/oct = 2 cascaded 2nd order butterworths (2 biquads)frequency(the cutoff frequency)gain(the linear gain)Fs (the sample rate of the project)2nd Order LOWPASS omega, sn, cs, alpha, a0;

17、omega = 2 * PI * frequency / Fs sn = Sin(omega)cs = Cos(omega)alpha = sn / (2 * (1 / (2)a0 = 1 + alphaA1 = -( 2 * cs) / a0A2 = (1 - alpha) / a0B1 = (1 - cs) / a0 * (10B0=B1/2B2=B02nd Order HIGHPASS omega = 2 * PI * frequency / Fs sn = Sin(omega) cs = Cos(omega)alpha = sn / (2 * (1 / (2)a0 = 1 + alph

18、aA1 = -( 2 * cs) / a0A2 = (1 - alpha) / a0B1 = -( 1 + cs) / a0 * (10B0=-B1/2B2=B00.5 )(gain / 20)0.5 )(gain / 20)Linkwitz-Riley36 dB/oct = 2 cascaded 3rd order butterworths3rd order butterworth is implemented by cascading a“ HigherOrder ”+ 1st order1stFilter: HigherOrder orderindex = 3, i = 02ndFilt

19、er: 1st Order Butterworth3rdFilter: HigherOrder orderindex = 3, i = 04thFilter: 1st order Butterworthfrequency(the cutoff frequency)gain(the linear gain)Fs (the sample rate of the project)orderindex(described abovechanges based on type)i (described above)LOW PASS HIGHER ORDERomega, sn, cs, alpha, a0

20、 , orderangleomega = 2 * PI * frequency / Fssn = Sin(omega)cs = Cos(omega)orderangle = (PI / orderindex) * (i + 0.5)alpha = sn / (2 * (1 / (2 * Sin(orderangle)a0 = 1 + alphaA1= -( 2 * cs) / a0A2= (1 - alpha) / a0(gain / 20)B1= (1 - cs) / a0 * (10)B0=B1/2B2= B0HIGH PASS HIGHER ORDERomega = 2 * PI * f

21、requency / Fssn = Sin(omega)cs = Cos(omega)orderangle = (PI / orderindex) * (i + 0.5)alpha = sn / (2 * (1 / (2 * Sin(orderangle)a0 = 1 + alphaA1= -( 2 * cs) / a0A2= (1 - alpha) / a0(gain / 20)B1= -( 1 + cs) / a0 * (10)B0=-B1/2B2= B0Linkwitz-Riley48 dB/oct = 2 cascaded 4th order butterworths4th order

22、 butterworth is implemented by cascading 2 2nd “ Higher Order ”using equations shown above.1st Filter: orderindex = 4, i = 02nd Filter: orderindex = 4, i = 13rd Filter: orderindex = 4, i = 04th Filter: orderindex = 4, i = 1ndButterworth 12 dB/oct = One 2 order butterworthstButterworth 18 dB/oct = One Higher order butterworth + One 1OrderFilt 1: HigherOrder: orderindex = 3, i = 0Filt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论