디지털 필터 설계 기본 원칙 (IIR / FIR)


15

오디오 엔진 등을 디자인 한 경험이 있지만 디지털 필터 디자인, 특히 IIR 및 FIR 필터 영역에 익숙하지 않습니다. 다시 말해, 필터를 설계하고 차이 방정식을 도출하는 방법에 대해 최대한 많이 배우려고합니다. 나는 기초부터 시작하고 있기 때문에, 배우려고 노력하고 있다고 말했듯이 나와 함께 견뎌주십시오.

여기 내 질문이 있습니다 :

특정 컷오프 (예 : 300Hz)로 저역 통과 필터를 설계하고 싶다고 가정 해 보겠습니다. 전달 함수를 수학적으로 도출 한 다음 Direct Form I 및 Direct Form II (또는 현재는 DF-1 만)에서 필터를 구현하기 위해 특정 차이 방정식을 도출하는 가장 좋은 방법은 무엇입니까?

나는 전달 함수에 대한 이해와 그것들이 웹상의 우수한 재료와의 차이 방정식과 어떻게 관련되는지, 불행히도 일부는 사전 지식이 있다고 가정하므로 내 퀘스트에 도움이되는 것보다 더 혼란 스럽습니다. 따라서 점을 연결하는 데 도움이되는보다 단계별 예제가 필요하다고 생각합니다.

그래서 저는 기본적으로 컷오프 주파수 선택부터 차이 방정식 도출에 이르기까지 프로세스 분석에 대한 도움을 찾고 있습니다.

도움을 주시면 감사하겠습니다. 나는 많은 개념에 익숙합니다-임펄스 응답, DFT, 그 배후의 수학, 더 도움이 필요한 것은 z- 변환의 개념과 필터의 전달 함수를 설계하기 위해 극점 / 제로 사용이라고 생각합니다. 컷오프 주파수는 어떻게됩니까? 차이 방정식을 도출하기 위해이 모든 것을 수행하십시오.

나는 모범을 통해 가장 잘 배우는 경향이 있기 때문에 여기서 물어볼 것이라고 생각했습니다. 나를 도울 시간을 찾는 사람에게 감사합니다.


2
많은 필터 설계 방법이 있습니다. 창 디자인 방법, 최소 제곱 필터 디자인 및 등 리플 필터 디자인 (일반적으로 Parks-McClellan 알고리즘 사용)을 시작하는 몇 가지 용어가 있습니다. 이들은 대부분 FIR 필터 설계로 제한됩니다. IIR 필터를 설계하는 일반적인 방법 중 하나는 버터 워스 필터와 같은 아날로그 프로토 타입을 해당 디지털 필터 근사치에 매핑하는 것입니다. 예를 들어, 이중 선형 변환 또는 임펄스 불변량 방법을 사용하여 수행 할 수 있습니다.
Jason R

답변:


20

디지털 필터 디자인은 매우 크고 성숙한 주제이며 질문에서 언급했듯이 사용할 수있는 자료가 많이 있습니다. 여기서 시도하고 싶은 것은 시작하고 기존 자료의 접근성을 높이는 것입니다. 여기에서는 계수 및 신호 양자화를 고려하지 않기 때문에 디지털 필터 대신 이산 시간 필터에 대해 이야기해야합니다. FIR 및 IIR 필터에 대해 이미 알고 있으며 DF I 및 II와 같은 일부 필터 구조도 알고 있습니다. 그럼에도 불구하고 몇 가지 기본 사항부터 시작하겠습니다.

비 재귀 선형시 불변 (LTI) 필터는 다음과 같은 차이 방정식으로 설명 할 수 있습니다.

(1)y(n)=h0x(n)+h1x(n1)++hN1x(nN+1)=k=0N1hkx(nk)

여기서 은 출력 시퀀스, x ( n ) 은 입력 시퀀스, n 은 시간 인덱스, h k 는 필터 계수, N 은 필터 길이 (탭 수)입니다. 필터 탭은 H (K)는 또한 필터의 임펄스 응답이기 때문에 입력 신호는 임펄스, 즉 인 경우 , X ( N ) = δ ( N ) , 다음 Y ( N ) = 시간 Ny(n)x(n)nhkNhkx(n)=δ(n)y(n)=hn(필터의 메모리가 0으로 초기화 된 경우). 식 (1)은 선형시 불변 유한 임펄스 응답 (FIR) 시스템을 기술한다. (1)의 오른쪽에있는 합은 컨볼 루션 합, 즉 출력 신호는 임펄스 응답으로 입력 신호를 컨볼 루션함으로써 얻어진다. 이것은 항상 사실이지만, IIR은 필터의 임펄스 응답은 긴 무한 때문에 우리는 명시 적으로, 즉 거기에 무한히 많은 계수 회선의 합을 계산 할 수없는 hk. FIR 필터의 중요한 장점 중 하나는 항상 안정적입니다. 즉, 제한된 입력 시퀀스의 경우 출력 시퀀스는 항상 바인딩됩니다. 또 다른 장점은 FIR 필터를 항상 정확히 선형 위상으로 구현할 수 있다는 것입니다. 즉 순수한 지연 외에 위상 왜곡을 추가하지 않습니다. 또한 나중에 볼 수 있듯이 설계 문제는 일반적으로 더 쉽습니다.

재귀 LTI 필터는 다음과 같은 차이 방정식으로 설명됩니다.

(2)y(n)=b0x(n)+b1x(n1)++bMx(nM)a1y(n1)aNy(nN)

식 (2)는 출력이 가중 및 지연 입력 샘플뿐만 아니라 가중 과거 출력 샘플로 구성됨을 보여준다. 일반적으로, 그러한 시스템의 임펄스 응답은 무한히 길다. 즉, 해당 시스템은 IIR 시스템이다. 그러나 유한 임펄스 응답의 재귀 필터에는 특별한 경우가 있습니다. 임펄스 응답은 더 이상 FIR 필터의 경우와 같이 계수 또는 a k 로 주어지지 않습니다 . IIR 필터의 장점 중 하나는 FIR의 경우보다 훨씬 적은 계수 (및 지연)로 높은 저지 대역 감쇠량을 갖는 가파른 필터를 실현할 수 있다는 것입니다. 즉, 계산 효율이 더 높습니다. 그러나 계수 a k 의 선택에주의해야합니다.bkakak IIR 필터가 불안정 할 수 있기 때문에, 제한된 입력 시퀀스에서도 출력 시퀀스가 ​​언 바운드 될 수 있습니다.

필터는 시간 (샘플) 도메인 또는 주파수 도메인 또는 둘 다의 사양에 따라 설계 될 수 있습니다. 귀하의 질문에 차단 주파수를 언급 했으므로 주파수 영역의 사양에 더 관심이 있다고 가정합니다. 이 경우 FIR 및 IIR 시스템의 주파수 응답을 살펴 봐야합니다. 시스템의 주파수 응답은 시스템이 존재한다고 가정 할 때 임펄스 응답의 푸리에 변환입니다 (안정적인 시스템의 경우). FIR 필터의 주파수 응답은

(3)H(ejθ)=k=0N1hkejkθ

θ

θ=2πffs

ffs. From (3) you can see that approximating a desired frequency response by an FIR system is basically a problem of polynomial approximation. For recursive systems we have

(4)H(ejθ)=k=0Mbkejθ1+k=1Nakejθ

and you get a rational approximation problem, which is usually much more difficult than the polynomial approximation problem in the case of FIR filters. From (3) and (4) you can see that the frequency response of an FIR filter is of course only a special case of the response of a recursive filter with coefficients ak=0, k=1,,N.

Let's now take a quick look at filter design methods. For FIR filters you could take an inverse Fourier transform of the desired frequency response to get the impulse response of the filter, which directly corresponds to the filter coefficients. Since you approximate the desired response by a finite length impulse response you should apply a smooth window to the obtained impulse response to minimize oscillations in the actual frequency response due to Gibbs' phenomenon. This method is called frequency-sampling method.

For simple standard filters like ideal lowpass, highpass, bandpass or bandstop filters (and a few others), you could even analytically calculate the exact impulse response by taking the inverse Fourier transform of the ideal desired response:

hk=12πππH(ejθ)ejkθdθ

This integral is easy to evaluate for piecewise constant desired responses, as is the case for ideal frequency-selective filters. This will give you an infinitely long, non-causal impulse response, which needs to be windowed and shifted to make it finite and causal. This method is know as window-design.

There are of course many other FIR filter design methods. One important numerical method is the famous Parks-McClellan exchange algorithm which designs optimal filters with constant passband and stopband ripples. It is a numerical approximation method and there are many software implementations available, e.g. in Matlab and Octave.

The most common IIR design method for frequency selective filters is the bilinear transformation method. This method simply uses analytical formulas for the design of optimal analog filters (such as Butterworth, Chebyshev, Cauer/elliptic, and Bessel filters), and transforms them to the discrete-time domain by applying a bilinear transformation to the complex variable s (analog domain) which maps the (imaginary) frequency axis of the complex s-plane to the unit circle in the complex z-plane (discrete-time domain). Don't worry if you do not yet know much about complex transfer functions in the analog or discrete-time domain because there are good implementations available of the bilinear transform method, e.g. in Matlab or Octave.

There are of course many more interesting and useful methods, depending on the type of specifications you have, but I hope that this will get you started and will make any material you come across more understandable. A very good (and free) book covering some basic filter design methods (and a lot more) is Intoduction to Signal Processing by Orfanidis. You can find several design examples there. Another great classic book is Digital Filter Design by Parks and Burrus.


Wow, Matt, thanks so much for the detailed and thoughtful answer. I will surely delve into it and truly appreciate your time. Thanks!
bitwise

Is there any good textbook for wavelet filter design ? I am curious about such a topic: dsp.stackexchange.com/questions/29090/…. Thanks!
LCFactorization

A very good intro and motivates to do something in the field of Signal Processing
jomegaA
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.