오늘은 적응형 알고리즘 중에서 가장 간단하면서도 많이 사용되는 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 가 되게 한겁니다.
코드는 다음과 같구요~
위 코드 작성후에 돌려 보시면 아래와 같은 결과가 나옵니다.
설명을 위해 파라미터 등을 대충 잡아 준거라 그림이 좀 조잡해 보이긴 하지만~ 예제를 보면 어떻게 되는건지 이해 하실거라 생각합니다.
'programming language > MATLAB' 카테고리의 다른 글
MATLAB, end 를 이용한 데이터 추가 (1) | 2011.11.18 |
---|---|
MATLAB 집합 관련 함수들 (0) | 2011.06.13 |
MATLAB plot tools (0) | 2011.05.26 |
MATLAB Graphic handle (0) | 2011.05.25 |
MATLAB Dependency Report (0) | 2011.05.21 |
MATLAB ordinary differential equations 를 풀어보자~ dsolve() (0) | 2011.05.15 |
MATLAB 연립 방정식 해 구하기, least square solution (967) | 2011.05.08 |
MATLAB Poisson (포아송) r.v. generation (0) | 2011.05.05 |
댓글