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)




댓글

이 블로그의 인기 게시물

windows에서 간단하게 크롬캐스트(Chromecast)를 통해 윈도우 화면 미러링 방법

딥러닝을 사용한 로또 번호 예측 실험

간단한 cfar 알고리즘에 대해

UWB 레이더를 사용한 호흡수 측정 원리

windows 10에서 스마트폰 미러링으로 화면 녹화