반응형

이전에 이동평균에 대해 다루어 보았습니다.

 

이동 평균 필터

주식(비트코인) 그래프를 보면 매 순간의 데이터가 아닌 평균을 이용해 중장기적인 추이를 보고는 합니다 (아래의 파란색 선) 평균과 차이 평균은 모든 데이터를 고려 했습니다. 반면 이동 평균

lceland.tistory.com

 

이동 평균의 단점으로는

샘플 내에서 오래된 데이터와 최신 데이터의 영향이

같다는 점이 있었고

이로 인해 시간 지연이 발생했습니다.

 

저주파 통과 필터에서는 이를 해결하기 위해

오래된 값일 수록 가중치를 낮게 두도록 하였습니다.

 

재귀식은 다음과 같습니다.

 

위 식에서 가중치 α(알파) 는

0 < α < 1 이며

따라서 오래 된 값일 수록 지수적으로

감소함을 알 수 있습니다.

따라서 이를 "지수 가중 이동평균 필터"라고도 부릅니다.

MATLAB 코드

clear all;

Nsamples = 500;
Xsaved = zeros(Nsamples, 1);
Xmsaved = zeros(Nsamples, 1);

for k=1:Nsamples
    xm = GetSonar();
    x = LPF(xm);

    Xsaved(k) = x;
    Xmsaved(k) = xm;
end

dt = 0.02;
t = 0:dt:Nsamples*dt-dt;

figure
hold on
plot(t, Xmsaved, 'r.');
plot(t, Xsaved, 'b');
legend('Measured', 'LPF')



function xlpf = LPF(x)

persistent prevX
persistent firstRun

if isempty(firstRun)
    prevX = x;
    firstRun = 1;
end

alpha = 0.7;
xlpf = alpha*prevX + (1 - alpha)*x;

prevX = xlpf;
end

 

뭐 큰 효과는 없지만

그래도 시간 지연을 약간 감소 시켰습니다.

 

LPF 에서는 α 를 얼마나 잘 선정했느냐에 따라

성능이 좌우 됩니다.

이동 평균 필터에서는 n 을 얼마로 정하는 것인지가

비슷한 역할을 합니다.

 

α 가 클수록 이전 데이터를 고려하는 것이고

작을 수록 최신 데이터를 고려하는 것입니다.

 

이전 데이터를 고려할수록 전체 평균의 역할 처럼

잡음을 제거하는 성질이 있고

최신 데이터를 고려할수록 변화에 민감하게

반응 하는 것입니다.

 

LPF 를 다른 재귀 필터들과

비교하면 다음과 같습니다.

 

반응형

+ Recent posts