디지털 필터 디자인은 매우 크고 성숙한 주제이며 질문에서 언급했듯이 사용할 수있는 자료가 많이 있습니다. 여기서 시도하고 싶은 것은 시작하고 기존 자료의 접근성을 높이는 것입니다. 여기에서는 계수 및 신호 양자화를 고려하지 않기 때문에 디지털 필터 대신 이산 시간 필터에 대해 이야기해야합니다. FIR 및 IIR 필터에 대해 이미 알고 있으며 DF I 및 II와 같은 일부 필터 구조도 알고 있습니다. 그럼에도 불구하고 몇 가지 기본 사항부터 시작하겠습니다.
비 재귀 선형시 불변 (LTI) 필터는 다음과 같은 차이 방정식으로 설명 할 수 있습니다.
y(n)=h0x(n)+h1x(n−1)+…+hN−1x(n−N+1)=∑k=0N−1hkx(n−k)(1)
여기서 은 출력 시퀀스, 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 필터는 다음과 같은 차이 방정식으로 설명됩니다.
y(n)=b0x(n)+b1x(n−1)+…+bMx(n−M)−−a1y(n−1)−…−aNy(n−N)(2)
식 (2)는 출력이 가중 및 지연 입력 샘플뿐만 아니라 가중 과거 출력 샘플로 구성됨을 보여준다. 일반적으로, 그러한 시스템의 임펄스 응답은 무한히 길다. 즉, 해당 시스템은 IIR 시스템이다. 그러나 유한 임펄스 응답의 재귀 필터에는 특별한 경우가 있습니다. 임펄스 응답은 더 이상 FIR 필터의 경우와 같이 계수 또는 a k 로 주어지지 않습니다 . IIR 필터의 장점 중 하나는 FIR의 경우보다 훨씬 적은 계수 (및 지연)로 높은 저지 대역 감쇠량을 갖는 가파른 필터를 실현할 수 있다는 것입니다. 즉, 계산 효율이 더 높습니다. 그러나 계수 a k 의 선택에주의해야합니다.bkakak IIR 필터가 불안정 할 수 있기 때문에, 제한된 입력 시퀀스에서도 출력 시퀀스가 언 바운드 될 수 있습니다.
필터는 시간 (샘플) 도메인 또는 주파수 도메인 또는 둘 다의 사양에 따라 설계 될 수 있습니다. 귀하의 질문에 차단 주파수를 언급 했으므로 주파수 영역의 사양에 더 관심이 있다고 가정합니다. 이 경우 FIR 및 IIR 시스템의 주파수 응답을 살펴 봐야합니다. 시스템의 주파수 응답은 시스템이 존재한다고 가정 할 때 임펄스 응답의 푸리에 변환입니다 (안정적인 시스템의 경우). FIR 필터의 주파수 응답은
H(ejθ)=∑k=0N−1hke−jkθ(3)
θ
θ=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
H(ejθ)=∑Mk=0bke−jθ1+∑Nk=1ake−jθ(4)
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.