전자공학

정수형 IIR 필터 사용시 주의해야 할 점

무에서 2018. 2. 7. 20:19
반응형

IIR 필터를 Floating point 연산이 아니라 Integer 변수를 사용하여 구현할 때 다음과 같은 문제가 있다.


가장 단순한 1차 IIR LPF 필터의 코드는 다음과 같다.



    y = (1*x + 9*y ) / 10;



위의 코드에서 x=101 이고 y가 100 이라면 위 식의 출력은 100 그대로 이다. 따라서, 입력 x는 계속해서 101 이지만 출력 y는 계속 100 으로 101 에 수렴되지 않는다. x가 91~109 까지의 범위일 때 출력 y는 100 으로 변하지 않게 된다.


위와 같은 문제는 정수형 변수는 소수점 이하를 버리기 때문에 생기는 현상이다.


IIR 필터의 코드에서 나누는 값이 커질수록 오차는 더 커진다.


신호 처리 알고리즘을 정수형으로 구현하는 것은 Floating point 연산을 사용하는 것에 비해 매우 복잡하다. 


# 정수형 IIR 필터 구현


반응형