본문 바로가기
programming language/MATLAB

MATLAB adaptive filtering, Least Mean Square(LMS)

by __observer__ 2011. 5. 23.
반응형

오늘은 적응형 알고리즘 중에서 가장 간단하면서도 많이 사용되는 Least Mean Square(LMS) 알고리즘에 대해 설명 드리겠습니다.

 

적응형 알고리즘은 임의의 모르는 시스템에 대한 identification이나 inverse response 를 구해서 채널 추정을 한다거나 할 때 주로 이용되며, 그 적용의 예는 무궁무진 하다고 합니다.

 

그 중에서도 LMS 알고리즘은 1960 년대에 만들어진 알고리즘임에도 불구하고 구현이 간단하고, 성능 또한 복잡도 대비 우수하여 많이 이용되고 있습니다.

 



 

계수 조절이 가능한 탭수 N 의 FIR 필터가 있는 경우 이 필터의 출력 신호 y(n)은 다음과 같이 정의 됩니다.

 

 

FIR 필터와 비교할 원하는 신호를 d(n) 이라 할 때 그 오차를 다음과 같이 계산할 수 있죠.

 

 

위 에러 신호의 제곱의 합을 최소화 하는 방향으로 필터의 계수를 적응 시켜야 하며, 오차의 제곱은 다음과 같은 식으로 전개가 됩니다.

 

 

 

위 에러의 제곱 식을 최소화 하려면 에러 제곱 식을 필터의 계수로 미분 하고 그 값이 0 인 계수 값을 구하면 될 것입니다.

 

 

위 식은 만족 하는 h(k) 에 대한 식은 다음과 같이 정리가 됩니다.

 

 

LMS 알고리즘의 위 식을 명시적으로 계산하는 것이 아닌 재귀적 경사법(Gradient Method)을 사용하여 최적의 필터 계수를 찾아줍니다.

 



 

LMS 알고리즘의 적용 과정은 다음과 같습니다.

 

  • h(k)의 임의의 초기값인 h0(k) 값을 설정합니다.

 

  • 입력 신호 x(n)을 적응 FIR 필터에 인가하여 그에 해당하는 출력 y(n)을 계산한 후에 오차 신호 e(n)을 계산합니다.

 

 

  • 아래 식을 이용하여 필터의 계수들을 update 합니다.

 

 

  • 위 식에서 μ 는 step size이며 최적의 해로 수렴하는 속도를 결정, 알고리즘의 안정성을 확보하기 위하여 다음 범위 안에 있어야 합니다.

 

,    

  


 

이제 위에서 설명한 LMS 알고리즘을 이용하여 아래 그림과 같은 Unknown FIR system 에 대한 identification 을 수행해 보죠.

 

 

  • Signal generator : [-a, a]에서 균일하게 분포하는 불규칙 신호, Px=a2/3 , a = 2

 

  • Unknown FIR system : [-0.87    0.5 0.3 -0.1 0.03]

 

  • Adaptive FIR Filter length, N=7로 설정

 

  • 안정성을 확보 하기 위한 μ 의 범위는 아래와 같음

 

 

위 문제에 대한 시뮬레이션 코드는 다음과 같습니다.

 

 

위 시뮬레이션에 따른 결과는 다음과 같습니다.

 

 

unknown system 에 대해 LMS filtering 을 수행하여 정상적인 identification 을 수행하는 것을 확인 할 수 있습니다.



<2013-01-24 추가 내용>

Demi 님이 방명록에 질문하신 내용에 대한 답변 입니다. 


desired 신호가 sine 이 되게 하고 x 입력 신호가 sine + noise 가 되게 한겁니다.


코드는 다음과 같구요~ 


위 코드 작성후에 돌려 보시면 아래와 같은 결과가 나옵니다. 

설명을 위해 파라미터 등을 대충 잡아 준거라 그림이 좀 조잡해 보이긴 하지만~ 예제를 보면 어떻게 되는건지 이해 하실거라 생각합니다. 



반응형

댓글