Английская Википедия:Bessel filter

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Short description Шаблон:Linear analog electronic filter

In electronics and signal processing, a Bessel filter is a type of analog linear filter with a maximally flat group delay (i.e., maximally linear phase response), which preserves the wave shape of filtered signals in the passband.[1] Bessel filters are often used in audio crossover systems.

The filter's name is a reference to German mathematician Friedrich Bessel (1784–1846), who developed the mathematical theory on which the filter is based. The filters are also called Bessel–Thomson filters in recognition of W. E. Thomson, who worked out how to apply Bessel functions to filter design in 1949.[2]

The Bessel filter is very similar to the Gaussian filter, and tends towards the same shape as filter order increases.[3][4] While the time-domain step response of the Gaussian filter has zero overshoot,[5] the Bessel filter has a small amount of overshoot,[6][7] but still much less than other common frequency-domain filters, such as Butterworth filters. It has been noted that the impulse response of Bessel–Thomson filters tends towards a Gaussian as the order of the filter is increased.[3]

Compared to finite-order approximations of the Gaussian filter, the Bessel filter has better shaping factor, flatter phase delay, and flatter group delay than a Gaussian of the same order, although the Gaussian has lower time delay and zero overshoot.[8]

The transfer function

Файл:Bessel4 GainDelay.png
A plot of the gain and group delay for a fourth-order low-pass Bessel filter. Note that the transition from the passband to the stopband is much slower than for other filters, but the group delay is practically constant in the passband. The Bessel filter maximizes the flatness of the group delay curve at zero frequency.

A Bessel low-pass filter is characterized by its transfer function:[9]

<math>H(s) = \frac{\theta_n(0)}{\theta_n(s/\omega_0)}\,</math>

where <math>\theta_n(s)</math> is a reverse Bessel polynomial from which the filter gets its name and <math>\omega_0</math> is a frequency chosen to give the desired cut-off frequency. The filter has a low-frequency group delay of <math>1 / \omega_0</math>. Since <math>\theta_n (0) </math> is indeterminate by the definition of reverse Bessel polynomials, but is a removable singularity, it is defined that <math>\theta_n (0) = \lim_{x \rightarrow 0} \theta_n (x) </math>.

Bessel polynomials

Файл:Bessel 3rd-order poles.svg
The roots of the third-order Bessel polynomial are the poles of the filter transfer function in the <math>s</math> plane, here plotted as crosses.

The transfer function of the Bessel filter is a rational function whose denominator is a reverse Bessel polynomial, such as the following:

<math>n=1: \quad s+1</math>
<math>n=2: \quad s^2+3s+3</math>
<math>n=3: \quad s^3+6s^2+15s+15</math>
<math>n=4: \quad s^4+10s^3+45s^2+105s+105</math>
<math>n=5: \quad s^5+15s^4+105s^3+420s^2+945s+945</math>

The reverse Bessel polynomials are given by:[9]

<math>\theta_n(s)=\sum_{k=0}^n a_ks^k,</math>

where

<math>a_k=\frac{(2n-k)!}{2^{n-k}k!(n-k)!} \quad k=0,1,\ldots,n.</math>

Setting the cutoff attenuation

There is no standard set attenuation value for Bessel filters, however, −3.0103 dB is a common choice. Some applications may use a higher or lower attenuation, such as −1 dB or −10 dB. The attenuation is set by frequency scaling the denominator. This can be approximated by interpolating Bessel filter attenuation tables, or calculated precisely with Newton's method.

The denominator may be frequency scaled by using a scaling factor that we will refer to as <math>\omega_c </math>. The frequency-scaled denominator of the Bessel transfer function may be rewritten for the <math>n=3</math> case above and the example below as follows:

<math>H(s)=\frac{15}{(s/\omega_c)^3+6(s/\omega_c)^2+15s/\omega_c+15}</math>

The task for modifying <math>H(s)</math> to is to find an <math>\omega_c </math> that results in the desired attenuation at 1 r/s for the normalized transfer function. Newton's method can be easily summarized to do this by its basic definition:

<math>\omega_a = \omega_a + (|H(j\omega_a)| - \text{DesiredAttenuation})/(d|H(j\omega_a)|/dj\omega_a)</math>

through successive iterations of <math>\omega_a</math> until <math>\omega_a</math>is the frequency that attenuates <math>|H(j\omega_a)|</math>to the desired attenuation at 1 radian/s.

While the above summary may be concise and easily understood, the mechanics of obtaining an accurate derivative of the magnitude function along the <math>j\omega</math> axis may be problematic. Digital techniques may be used, but it is generally better to apply Newton's method with continuous functions, if possible, so as to maximize accuracy. Therefore, it is useful to modify the expression to eliminate excess mathematical functions by making the following alterations:

  1. Multiply <math>H(s)</math> by <math>H(-s)</math> to obtain <math>H(s)H(-s)</math>. This will eliminate complex numerical results when evaluating <math>|H(s)H(-s)|</math> by removing the odd order terms in the polynomial.
  2. In <math>H(s)H(-s)</math>, negate all terms of <math>s^n</math> when <math>(n+2)</math> is divisible by <math>4</math>. That would be <math>s^2</math>, <math>s^6</math>, <math>s^{10}</math>, and so on. We will call the modified function <math>H_2(s)H_2(-s)</math>, and this modification will allow the use of real numbers instead of complex numbers when evaluating the polynomial and its derivative. That is, we can now use the real <math>\omega_a</math>in place of the complex <math>j\omega_a</math>
  3. Convert the desired attenuation in dB, <math>A_{dB}</math>, to an arithmetic attenuation value, <math>A_{arith}</math>, using <math>A_{arith} = 10^{A_{dB}/20}</math>. For example, −3.010 dB is 0.7071, −1 dB is 0.8913 and so on. This simplifies the derivative evaluation.
  4. Square the resulting arithmetic attenuation to correlate with the squaring of the <math>H(s)</math> function.
  5. Calculate the modified <math>[H_2(\omega_a)H_2(-\omega_a)]</math> in Newton's method using the real value, <math>\omega_a</math>. Always take the absolute value.
  6. Calculate the derivative the modified <math>H_2(\omega_a)H_2(-\omega_a)</math> with respect to the real value, <math>\omega_a</math>. Negate the derivative computation to account for the effects due to the modifications made to create <math>H_2(\omega_a)H_2(-\omega_a)</math>. DO NOT take the absolute value of the derivative.

When steps 1) through 4) are complete, the expression involving Newton's method may be written:

<math>\omega_a = \omega_a + ([H_2(\omega_a)H_2(-\omega_a)] - \text{DesiredAttenuation})/(d[H_2(\omega_a)H_2(-\omega_a)]/d\omega_a)</math>

using a real value for <math>\omega_a</math>with no complex arithmetic needed. The movement of <math>\omega_a</math> should be limited to prevent it from going negative early in the iterations for increased reliability. When complete, invert <math>\omega_a</math>to obtain an <math>\omega_c</math>that can be used to scale the original <math>H(s)</math> transfer function denominator. The attenuation of <math>H(s/\omega_c)</math> will then be virtually the exact desired value at 1 radian/s. If performed properly, only a handful of iterations are needed to set the attenuation through a wide range of desired attenuation values for both small and very large order Bessel filters.

Example

Файл:Bessel 3rd-order gain.svg
Gain plot of the third-order Bessel low-pass filter, versus normalized frequency.
Файл:Bessel 3rd-order delay.svg
Group delay plot of the third-order Bessel low-pass filter, illustrating flat unit delay in the passband.

The transfer function for a third-order (three-pole) Bessel low-pass filter with <math>\omega_0 = 1</math> is

<math>H(s)=\frac{15}{s^3+6s^2+15s+15},</math>

where the numerator has been chosen to give unity gain at zero frequency (<math>s = 0</math>).The roots of the denominator polynomial, the filter's poles, include a real pole at <math>s=-2.3222</math>, and a complex-conjugate pair of poles at <math>s = -1.8389 \pm j1.7544</math>, plotted above.

The gain is then

<math>G(\omega) = |H(j\omega)| = \frac{15}{\sqrt{\omega^6+6\omega^4+45\omega^2+225}}. \, </math>

The −3-dB point, where <math>|H(j\omega)| = \frac{1}\sqrt{2}, \, </math> occurs at <math>\omega = 1.756 </math>. This is conventionally called the cut-off frequency.

The phase is

<math>\phi(\omega)=-\arg(H(j\omega))=

\arctan\left(\frac{15\omega-\omega^3}{15-6\omega^2}\right). \, </math>

The group delay is

<math>D(\omega)=-\frac{d\phi}{d\omega} =

\frac{6 \omega^4+ 45 \omega^2+225}{\omega^6+6\omega^4+45\omega^2+225}. \, </math>

The Taylor series expansion of the group delay is

<math>D(\omega) = 1-\frac{\omega^6}{225}+\frac{\omega^8}{1125}+\cdots.</math>

Note that the two terms in <math>\omega^2</math> and <math>\omega^4</math> are zero, resulting in a very flat group delay at <math>\omega=0</math>. This is the greatest number of terms that can be set to zero, since there are a total of four coefficients in the third-order Bessel polynomial, requiring four equations in order to be defined. One equation specifies that the gain be unity at <math>\omega=0</math> and a second specifies that the gain be zero at <math>\omega=\infty</math>, leaving two equations to specify two terms in the series expansion to be zero. This is a general property of the group delay for a Bessel filter of order <math>n</math>: the first Шаблон:Nowrap terms in the series expansion of the group delay will be zero, thus maximizing the flatness of the group delay at Шаблон:Nowrap.

Digital

As the important characteristic of a Bessel filter is its maximally-flat group delay, and not the amplitude response, it is inappropriate to use the bilinear transform to convert the analog Bessel filter into a digital form (since this preserves the amplitude response but not the group delay).

The digital equivalent is the Thiran filter, also an all-pole low-pass filter with maximally-flat group delay,[10][11] which can also be transformed into an allpass filter, to implement fractional delays.[12][13]

See also

References

Шаблон:Reflist

External links

  1. Ошибка цитирования Неверный тег <ref>; для сносок BesselFilterTI не указан текст
  2. Ошибка цитирования Неверный тег <ref>; для сносок Thomson1949 не указан текст
  3. 3,0 3,1 Ошибка цитирования Неверный тег <ref>; для сносок RobertsTRT не указан текст
  4. Ошибка цитирования Неверный тег <ref>; для сносок compdsp не указан текст
  5. Ошибка цитирования Неверный тег <ref>; для сносок nuhertz не указан текст
  6. Ошибка цитирования Неверный тег <ref>; для сносок tuiasi не указан текст
  7. Ошибка цитирования Неверный тег <ref>; для сносок kecktaylor не указан текст
  8. Ошибка цитирования Неверный тег <ref>; для сносок Paarmann2001 не указан текст
  9. 9,0 9,1 Ошибка цитирования Неверный тег <ref>; для сносок Bianchi2007 не указан текст
  10. Ошибка цитирования Неверный тег <ref>; для сносок Thiran1971 не указан текст
  11. Ошибка цитирования Неверный тег <ref>; для сносок Madisetti1997 не указан текст
  12. Ошибка цитирования Неверный тег <ref>; для сносок Smith2015 не указан текст
  13. Ошибка цитирования Неверный тег <ref>; для сносок Valimaki1995 не указан текст