본문 바로가기

Software/Python

Python - IPython에서 구현하는 저역통과필터 Low Pass Filter

갑자기 요즘에 저역통과필터(LPF)를 자주 다루게 되네요... 아주 예전에 저역통과필터를 C로 간편히 구현하는 법에 대해 다루었었는데요...

[The Robot/Prog.Lang.] - 저역통과필터와 고역통과필터를 C로 구현

하는 위 글이었죠.. 그리고 불과 몇일전에 이걸 엑셀에서 한 번 해보는 것을 또

[The Robot/Prog.Lang.] - 엑셀에서 저역통과필터 (Low Pass Filter) 구현하기

다루었죠... 같은 데이터를 이용해서 이번에는 이걸 최근에 세팅한

[The Robot/Prog.Lang.] - Win8에서 IPython Notebook 사용하기

IPython 환경에서 살짝 구현해볼까 해용^^

위 수식은 이전 글에서 다룬 1차 저역통과필터를 코드로 간편히 보여준 것이구요. 이제 시작해보죠^^

numpy, pandas, matplotlib를 import하구요. 뭐 스타일에 따라 다르겠지만... 그래프는 inline으로 표현하는 것으로 설정했습니다.

그리고, [바로가기]에서 이야기한 txt로 저장된 파일을 읽어 들이는 겁니다. 이건 뭐 그냥 데이터에 LPF를 적용하기 위해서 지나가는 겁니다.

이 데이터는 0.0001초 단위로 데이터를 받았기 때문에 index를 받아서 0.0001을 곱해서 time을 구했구요...

실험한 데이터 중에서 AData열만 사용하기 위해 LPF의 적용대상으로 targetData로 명명했습니다.

targetData를 한번 그려보았습니다. 대충 아래로 볼록한 그래프인데.... 해당 구간에서 노이즈가 엄청나게 실려있네요.ㅠㅠ. 이걸 다듬는게 오늘의 목적이죠^^

그리고 그 목적은 사실.. 위 코드로 끝났습니다. ^^. for문 안에 있는 수식이 바로

이 수식이거든요.... tmpResult를 같은 길이로 선언하고, 거기에 LPF한 결과를 저장한 것입니다.

해당 결과가 잘 저장되었음을 알 수 있네요^^

위와 같이 원본과 필터링된 결과를 같이 그려보았습니다. 살짝 시간 지연이 보이지만 또 데이터가 잘 다듬어 진 듯 하네요... 살짝 조금 더 크게 볼까요???^^

네.. 원본 데이터의 노이즈 성분을 저역통과필터로 간편히 필터링한 결과를 보실 수 있네요^^

반응형