[알고리즘]

Filter 그리고 FIR, IIR

Neo Park 2014. 9. 24. 12:15

 

 

 

필터(Filter)는 정수기의 필터 처럼 불순물을 걸러내는 역할을 한다.
간단히 우리는 너무 어렵게 생각하는 경향이 있는데
사실 일상생활에서 사용하는 대부분의 개념이 과학과 공학에도 같이 적용된다.

구글에서 알고 싶은 정보를 검색하는 것도 필터의 개념이다.
즉 수많은 쓰레기 정보에서 필요한 정보를 골라해는 것 또한 정보분야에서의 진정한 필터이다.
피드백 : http://shlovecat.tistory.com/entry/피드백-feedback

하지만 공학에서 의미하는 필터로 한정시켜 보자면,
신호에 포함된 노이즈를 제거시켜 원하는 신호를 얻고자 함은 당연한데 이러한 역학을 하는 것이 필터이다.
즉 아날로그 부분과 디지탈 부분에서 필터를 구현하는 것은 다른데,
아날로그에 대한 설명 ->  http://www.rfdh.com/bas_rf/begin/filter.php3
이제 디지털 부분을 살펴보자.

아날로그는 연속된 신호를 표현하는데
디지털은 비연속적인 이산신호(디지타이드된)를 다루게 되므로 연속된 신호를 샘플링하는 과정을 거치게 된다. 이렇게 디지털화 된 신호는 전송이나 저장이나 처리에 여러모로 편리하고 유리하여 디지털화하여 처리되고 있다.

디지털에서 필터를 다룰때는
시간영역(시간축에 따른 신호크기성분)에서 주파수영역(주파수축에 따른 신호크기)으로 바꾸어서 필요한 주파수 부분만 추출하여 통과처리하는 방식을 선택한다.
물론 모든 주파수영역에서 처리할 필요는 없다. 단지 해석을 할때는 시간영역보다 주파수영역이 더 편하기 때문에 위와같은 방법을 채택하고 있다.


위의 그래프를 보면
시간축보다는 주파수축에서 신호를 골라내는 것이 훨씬 수월해 보인다.
이런 이유로 우리가 잘 알고 있는 신호들은 시간영역의 신호를 필터를 사용하기 위해서 주파수영역으로 이동, 변환시켜 사용하게 된다.

자연계에 존재하는 시간 영역의 신호를 주파수 영역으로 변환할 때 100% 완벽하게 변환 및 복원시킬 수 있는 것은 아니다. 그래서 필터를 어떤 모양으로 만들어 사용하는 것이 신호를 변환하고 다시 복원시킬때 가장 완벽하게 복원시킬 수 있는 지가 중요하다.
따라서 FIR 필터로 IIR 필터와 동일한 정도의 진폭특성을 얻으려고 하면 차수가 매우 커지기 때문에 메모리 가산기, 승산기등이 복잡해진다.

http://www.mcublog.co.kr/452
http://www.mcublog.co.kr/480
http://www.mcublog.co.kr/544
http://www.mcublog.co.kr/592
http://www.mcublog.co.kr/611

다음 항목들은 다음의 내용을 정리 : http://www.mcublog.co.kr/649

FIR이나 IIR필터를 선택할 경우에는 두 필터의 장점을 고려하여 맞는 필터를 선택한다.
- FIR 필터는 IIR 필터에 비해 구조가 간단하다.
- FIR 필터는 항상 안정성이 보장되지만, IIR 필터는 그렇지 않다.
- FIR 필터의 위상은 선형이고, IIR 필터의 위상은 비선형이므로 FIR 필터의 윗아이 왜곡에 강건하다.
- FIR 필터를 사용하여 원하는 필터를 각이 지게 설계하려면 필터의 계수들이 IIR 필터를 사용했을
   경우보다 더 많이 필요하게 된다.
- IIR 필터는 아날로그 필터의 구조와 비슷하므로 아날로그 필터로 변환이 쉬운반면에 FIR 필터는
  상대적으로 어렵다.

결론적으로 필터 설계의 요구 사항이 각진 필터라면 IIR 필터를 사용하고 위상에 있어서 왜곡을 원하지 않거나 계수들이 너무 많지 않다면 FIR 필터로 설계하면 된다.

FIR 필터(finite impulse response filter)
피드백 구조가 아닌 오픈루프방식이다.
FIR필터는 디지털 필터의 한 종류로 입력신호의 일정한(유한한, finite) 값들만을 가지고 필터링을 수행한다. 따라서 필터의 특성함수인 임펄스 응답을 구해보면 유한한 길이를 가진다.
필터의 식의 형태에서 보면 회귀(feedback)성분을 갖지 않는다.
그러므로 동일한 특성을 구현할 때 차수가 IIR 필터에 비하여 높아져서 구현비용(부품가격, 실행시간 등)이 많이 들지만 위상변이(즉, 입력과 출력간의 파형의 형태유지)가 중요한 경우에는 반드시 FIR 필터를 사용해야한다.
설계법으로는 윈도우에 의한 방법, 주파수 표본화 방법, 컴퓨터에 의한 최적 설계법 등이 있다.

IIR 필터(infinite impulse response filter)
피드백 구조를 가지며 구조가 간편하다.
IIR 필터는 디지털 필터의 한 종류로 입력신호의 값과 출력신호의 값이 재귀적으로(recursive, feedback) 적용되어 필터링이 수행된다. 따라서 구현식의 형태로 반복식이 되며 특성함수인 임펄스 응답은 무한한 길이를 갖는다.
동일한 특성을 갖는 FIR필터에 비해 차수가 적어져서 경제성이 있으나 위성특성의 측면에서는 비선형성을 가지므로(즉, 각 주파수 성분마다 위상의 차이가 비선형적으로 달라서) 입력 파형과 출력 파형이 유사한 파형을 갖지 않는다.
설계법으로는 bilinear transform 에 의한 방법, 임펄스 응답 불변법등이 있다. 이러한 방법은 공통적으로 차단 주파수 근방에서 진폭이나 주파수 축의 왜곡이 발생할 가능성이 있으므로 원하는 필터링 대역보다 표본화 주파수를 크게 잡는 것이 좋다.

IIR(Infinite impulse response)과 FIR(Finite impulse response) filter의 기본적인 식은 filter의 impulse response sequence h(k)로 표현된다.

y(n)= ∑ h(k) x(n-k)   {k→0~∞} : IIR Filters
y(n)= ∑ h(k) x(n-k)   {k→0~N-1} : FIR Filters

식에서 보면 FIR filter의 h(k)는 유한한 값들을 가지지만 IIR filter의 h(k)는 무한대의 값을 갖는다.
실제로 계산하기 위해서는 무한대의 계산은 불가능하지만 IIR filter의 경우 IIR filter는 현재의 y(n)을 계산하기 위해 현재, 과거 input samples 뿐만 아니라 과거의 output도 사용된다는 것이다. 즉 feedback의 형태를 띈다.


FIR필터를 설계할 경우 스펙이 주어지는 방법으로 주파수 영역과 시간영역의 2가지가 있다.
스펙이 주파수영역으로 주어지는 경우 창합수법과 주파수 샘플링법등이 많이 이용된다.
창합수법은 이상필터의 무한 임펄스응답을 유한 임펄스응답으로 근사하여 FIR필터의 계수를 결정하는 방법이고, 주파수 샘플링법은 설계스펙으로 주어진 진폭특성을 주파수축 상에서 샘플링하여 근사하는 방법이다. 그외 remez 알고리즘을 이용하거나 선형계획법을 이용한 최적 필터 설계법 등이 있다. 한편 시간영역 스펙으로 주어지는 경우 임펄스응답은 FIR 디지털필터의 계수에 대응하므로 그 설계는 간단하다. 전달함수를 근사하는 방법으로는 선형계획법이 많이 알려져 있는데 최적해가 존재할 경우제는 유한계산으로 최적해를 구할 수 있다.


<위의 자료 정리 발췌부분 : http://www.mcublog.co.kr/649 >

FIR 필터는 IIR 필터와 달리 이산시간 영역에서 직접 설계가 가능한데 FIR 필터는 유한한 길이의 입력에만 의존하기 때문이다. 여러가지 방법 중에서 가장 쉬운 방법은 창함수를 이용한 방법이다.
창함수를 이용하여 FIR 필터를 설계하는 방법의 기본적인 원리는 원하는 형태의 주파수 영역에서의 필터를 먼저 설계한 후에 이를 역 변환하여 시간 영역에서의 필터를 구하는 방법이다.
이때 선형 위상을 갖는 이상적인 필터를 역 변환하면 비 인과적 필터가 되기 때문에 창함수를 이상적인 필터에 적용시켜서 인과적인 필터로 만들어 주게 된다.

- 이상적인 필터 설정 : 먼저 설계하고자 하는 필터를 주파수 영역에서 설정한다.
                일반적으로 다음과 같이 설정하면, 크기는 이상적이고, 선형 위상을 갖는 저역 통과 필터
                를 나타내게 된다. 이러한 함수를 시간영역에서 보면, 다음과 같은 특징을 갖는다.
                주파수 영역에서 위와 같은 특성을 갖는 시스템을 시간 영역에서 계산해 보면 다음과 같
                은 형태를 갖는 함수가 된다.

 

 

 

참조 :  http://shlovecat.tistory.com/entry/%ED%95%84%ED%84%B0-%EA%B7%B8%EB%A6%AC%EA%B3%A0-FIRIIR

'[알고리즘]' 카테고리의 다른 글

[퍼셉트론] 신경망 정의 및 모델  (0) 2014.10.13
FIR filter Desgin  (0) 2014.09.24
FIR Filter와 IIR Filter의 차이점  (0) 2014.09.24
[verilog] 연산자, 데이터, 넷, 주석  (0) 2013.10.11
[asm] shift 이용한 2로 나누기  (0) 2013.10.11