신호 처리 업무를 하면서 가끔씩은 디지털 필터가 필요한 경우가 있습니다. 저도 최근에 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
'programming language > MATLAB' 카테고리의 다른 글
MATLAB 을 사용하여 원의 방정식에 대해 가우스-뉴턴 방법 적용 실험 (0) | 2019.01.03 |
---|---|
MATLAB si-prefix string 표현 (0) | 2018.12.29 |
Simulink shift register generation function (0) | 2018.12.23 |
MATLAB Simulink configuration 스크립트 사용방법 (2) | 2018.12.22 |
Simulink subsystem의 종류와 공부 방법 (0) | 2018.12.18 |
MATLAB Simulink 시작하기 (582) | 2018.11.16 |
MATLAB recursive 경로 문자열 생성 genpath (0) | 2018.10.15 |
MATLAB Simscape 로 간단하게 회로 구성해보기 (772) | 2018.10.10 |
댓글