카테고리 없음

디지털 필터(이동평균필터, Low-Pass Filter)

Luyin 2012. 3. 4. 21:07
저주파 통과 필터(Low-Pass Filter) : 기준주파수 이하의 데이터만 통과하게함.
ts : 데이터 입력 주기


int Lowpass_Filter(int input)
{
    int tau=5.4;    //정하는 기준을 아직 잘 모르겠음.
    
    return tau/(tau+ts)*pre_y+ts/(tau+ts)*input;
    //원리 : 필터결과 = 이전 데이터의  (80%)? + 입력데이터의 (20%)?
}

고주파 통과 필터(High-Pass Filter) : 기준 주파수 이상의 데이터만 통과 하게 됨.
ts : 데이터 입력 주기


int Highpass_Filter(int input)
    int tau=5.4;    //정하는 기준을 아직 잘 모르겠음.
    
    return tau/(tau+ts)*pre_y+ts/(tau+ts)*(input-pre_input);
    //원리 : 필터결과 = 이전 데이터의  (80%)? + (입력데이터-이전입력데이터)(20%)?
}

이동평균필터
MoveAverageFilter


#define FILTERSIZE 10

int data[FILTERSIZE];

int Moving_Average(int input)
{
    int sum, average, i;
    
    for(i=0; i<FILTERSIZE; i++)
        sum += data[i];
        
        sum += input;
        
    average = sum/(FILTERSIZE+1);
    
    for(i=0; i<FILTERSIZE-1; i++)
        data[i] = data[i+1];
        
    data[i] = average;
    
    return average;      
}