본문 바로가기
Matlab

Matlab 정합필터 ( Matched Filter ) 쉽게 하기 (코드 첨부)

by 매일사직서 2023. 5. 23.
반응형

오늘은 정합필터(Matched Filter)에 대해 알아보려고 합니다.  정합필터는 SNR 향상에 가장 직접적으로 도움이 되며 Radar, Sonar, Ultrasound 신호처리 분야에서 필수로 사용되므로 꼭 꼭 마스터해놓으시길 바랍니다.  전 포스팅에서 배운 filter 함수를 활용하여 간단하게 하는 방법에 대해 알려드리겠습니다. 

matlab 예제 사진

출처 : https://kr.mathworks.com/help/phased/ug/matched-filtering.html

Matched filter 란?

Matched filter를 사용하는 가장 큰 이유는 SNR을 늘리고자 하는 이유가 가장 큽니다. 다들 기본적인 이론은 찾아보시고 왔다는 가정하에 설명드릴게요. 내가 보낸 신호를 알고 있을 때, 내 신호를 부각하기 위해 사용하는 방법이라고 생각하시면 됩니다. 저는 Matched filter를 수중음원 데이터 이미지화, 음향 신호 방위각 서치, 음향 신호 도착 시간 계산 등 수중음향에서 주로 사용합니다. 

Matched filter 사용

기본적으로 Matched filter 대신 사용 할 수 있는 함수로는 conv(convolution), xcorr(cross correlation) 이 있습니다. 물론 조금 수정을 해야 하지만 사용하는 데는 문제가 없습니다. 이번시간에서는 filter 함수를 사용할 것입니다. filter 함수를 사용하는 이유는 실제 FPGA에 matched filter를 심기 위해서는 firfilter블록을 활용해서 진행하는 게 유리하기 때문입니다. filter함수를 이해하여 다양한 상황에서 자유롭게 사용하시길 바랍니다. 이는 더 나아가 개발 업무를 할 때 아주 큰 힘이 될 수 있답니다. 

Matched filter 예시

기본 matched filter
matched filter 기본 예시

Continous Wave를 수신 했다는 가정하에 matched filter를 돌리면 아래와 같이 matching signal을 확인할 수 있습니다. 물론 실제 사용 할 때는 magnitude 및 normalize를 진행하여 A * exp(1i*2*pi*f*t) = A * magnitude라는 것을 뽑아냅니다. 
그리고 수중음향에서는 matched filter의 효율을 증대시키기 위해 (즉 SNR을 증대) LFM 신호를 주로 사용하게 됩니다. 

matched filter 2
matched filter 기본 예시 2

위 신호는 LFM 신호를 이용 하였을 때 matched filter 결과입니다. SNR이 굉장히 좋져? 그렇기 때문에 CW에 비해 굉장히 긴~ 시간 동안 음파를 발생하는데 긴~신호의 길이만큼 matched filter를 하게 되면 당연히 SNR도 올라가게 됩니다. 대신 샘플의 길이가 길어질 수 록 filter 함수의 필터 계수의 길이(차수)가 늘어나므로 일반적으로 Down sample 후 사용 하게 됩니다. 

Matched filter 실제 적용 

이러한 데이터를 실제 데이터에 적용하면 굉장히 이쁜 이미지들이 생성됩니다. 저는 보안 문제 때문에 보여드릴 순 없으니 시뮬레이션 자료를 보여 드리겠습니다. 

해저 지형 모사

위 시뮬레이션 처럼 사람과 배의 신호를 시뮬레이션해서 해저 지형을 모사하고, 이를 matched filter를 사용하여 SNR을 올린 사진입니다. 물론 지금 당장 위처럼 활용하긴 어렵겠지만, 추후 이런 곳에 사용할 수 있다는 것만 아시면 될 것 같습니다. 위 matched filter 코드는 아래에 올려드릴게요. 

Matched Filter 코드 다운로드

 

반응형

댓글