본문 바로가기
programming language/MATLAB

MATLAB DC 제거 디지털 필터

by 남성 2018. 12. 19.

신호 처리 업무를 하면서 가끔씩은 디지털 필터가 필요한 경우가 있습니다. 저도 최근에 DC 성분을 제거하는 DC 제거 필터가 필요해서 검색을 해보니 아래 주소에서 굉장히 좋은 글을 발견할 수 있었습니다.

DC 제거 필터 관련 읽어볼만한 글

https://www.embedded.com/design/configurable-systems/4007653/DSP-Tricks-DC-Removal

위 링크의 글에서 확인할 수 있는 바와 같이 가장 기본적인 DC 제거 필터의 시간 도메인 수식은 아래와 같습니다.

DC 제거 필터 수식

x[n] - x[n-1] = y[n] – a* y[n-1], a < 0

DC 제거 필터의 zero 가 1 이 됨으로서 DC 에 무한대의 attenuation 을 주게 되고 a 값이 1 에 가까워 질수록 notch 의 기울기가 증가하게 됩니다.

numerator [1 -1], denominator [1 -0.95] 인 경우의 DC 필터에 대해 MATLAB을 사용하여 알아보면~

freqz 명령어를 통해 Frequency response 를 확인할 수 있고 명령어는 아래와 같습니다.

freqz([1 -1], [1 -0.95],512,1000)

zero-pole plot 을 확인하기 위해스는 zplane 명령어를 사용하고 아래와 같이 확인 할 수 있습니다.

zplane([1 -1], [1 -0.95])

Impulse response 에 대해 확인하기 위해서는 impz 함수를 사용하고 아래 예와 같이 사용합니다.

impz([1 -1], [1 -0.95])

디지털 필터 관련 참고 자료들

IIR Filter 관련 읽어볼만한 글

http://www.eas.uccs.edu/~mwickert/ece2610/lecture_notes/ece2610_chap8.pdf

Lecture Notes

http://www.eas.uccs.edu/~mwickert/ece2610/lecture_notes/

DC 필터 이외의 다양한 필터들에 대한 수식들

저주파 통과 필터

y[k] = a*y[k-1]+(1-a)*x[k],  a < 0

고주파 통과 필터

y[k] = -a*y[k-1]+(1-a)*x[k], a < 0

평균 필터

y[k] = [(k-1)/k]*y[k-1]+(1/k)*x[k]

N 이동평균 필터

y[k] = y[k-1] + (x[k]-x[k-N])/N



댓글0