CA-CFAR 예제 코드

 이전 포스트에서 CFAR의 원리에 대해 알아본 적이 있다. 본 포스트에서는 Python으로 CA-CFAR에 대해 간단하게 구현한 예제를 수록하고 있다.

구현된 CA-CFAR은 아래 그림과 같이 구현되었다.

 


ca-cfar 코드

import numpy as np

class cacfar(object):
    def __init__(self, window_size, guard_size,pfa = 0.01, scale=1.0):
        self.pfa = pfa
        self.scale = scale
        self.window_size = window_size
        self.guard_size = guard_size
        
    def cal_threshold(self, left, right):       
        n = len(left)+len(right)
        s = np.sum(np.square(left))+np.sum(np.square(right))
        
        if n > 0:
            T= np.power(self.pfa,(-1.0 /n)) - 1
            average = s/n
            return T*average * self.scale
        
        return 0
    
    def clip_window(self, window,limit):
        for i in range(len(window)):
            if window[i] < 0:
                window[i] = 0
            if window[i] > limit:
                window[i] = limit
        return window        
    
    def get_thresholds(self,signal):
        threshold = np.zeros_like(signal)       
        for i in range(len(signal)):
            left_window = self.clip_window([i-self.guard_size-self.window_size,i-self.guard_size],len(signal)-1)
            right_window = self.clip_window([i+self.guard_size,i+self.guard_size+self.window_size],len(signal)-1)
            
            threshold[i] = self.cal_threshold(signal[left_window[0]:left_window[1]],signal[right_window[0]:right_window[1]])
        
        return threshold



ca-cfar 사용예

cfar = cacfar(window_size=30,guard_size=30,pfa=0.0001,scale=10)
threshold = cfar.get_thresholds(signal)




댓글

이 블로그의 인기 게시물

간단한 cfar 알고리즘에 대해

쉽게 설명한 파티클 필터(particle filter) 동작 원리와 예제

아두이노(arduino) 심박센서 (heart rate sensor) 심박수 측정 example code

리눅스 디바이스 드라이버 기초와 예제

python winsound를 이용한 윈도우 환경에서 소리 재생 예제