'Filter'에 해당되는 글 2건

  1. 2012.04.07 Introduction of Adaptive Signal Process (적응 필터 소개) (10)
  2. 2011.05.22 Analog Active Filter 설계 (10)

이번 포스팅에서는 Adaptive Signal Processing 이 어디에 어떻게 쓰이는지, Filtering 이 무었인지 등의 기본이 되는 이론들을 소개할까 합니다. 

전체적인 틀을 크게 한번 보고 나서 세부적인 부분을 다루면 그만큼 이해하기 쉬울것 같아서요 ㅋㅋㅋ

1. 필터링이란 무엇인가? (What the filtering is for?)

: 여러가지 다양한 정의가 있겠지만, 저는 이렇게 정의 내린답니다. " 신호 중에서 원하는 정보를 뽑아 내는것 " R.P 에서 원하는 정보라 함은 "원하는 통계적 특성" 이 되겠지요? statistical moment 용 ㅋㅋㅋ

filter 로 할 수 있는 작업을 크게 3가지로 나누어 보겠습니다. 

(1) filtering
(2) smoothing : 측정된 데이터를 이용하여 현재의 출력값을 결정하는 방법입니다. 다양한 스무딩 방법이 있지만 그중에서도 Adjacent Averaging method 와 Savitzky-Golay method 이 대표적이죠? 저는 이중에서도 후자인 Savitzky-Golay Smoothing filter 를 주로 쓴답니다 ㅋㅋ


요론식으로 스무딩 된답니다 ㅋㅋ 상기 그림은 제가 뽑아낸 호흡 신호를 스무딩한 그림입니다. ㅋ 스무딩 필터 이야기 하는 곳이 아니므로 관심 있으신분들은 개인적으로, 댓글로 해결하도록 해요 ㅋ

(3) prediction : forward prediction 과 backward prediction 이 두가지로 나눌수 있습니다. 너무 직관적이죠 이름이? ㅋ 과거의 정보로 미래에 일어날 일들을 예측하는 것을 forward prediction 이라고 합니다. 그 반대가 backward prediction 입니다. 

(4) Examples of the linear filtering 

i) Wiener filter : linear optimum system 설계시 주로 이용됩니다. 영상처리나 뇌파 분야, 즉 rp 를 다루는 분야에서는 이 필터에 익숙하실 것입니다. 신호의 통계적인 특성들을 알고 있을 때 사용할 수 있습니다. mean square 기반으로 target 신호와 내가 만든 모델 신호간의 error 를 최소화하려는 시도라 볼 수 있습니다. 다만 가장 큰 단점으로, nonstationary signal 에 적용하기에는 부적적합니다. 

ii) Kalman filter : 가속도 센서와 자이로센서의 출력을 융합하는데 주로 쓰이지요? ㅋ 쿼드콥터 등이 보편화된 이 시기에 대학 학부생들의 입에서도 이 단어가 심심치 않게 들립니다. 굉장히 복잡한 개념이지만, signal 의 trend 를 잘 따라갈 수 있게 해주는 filter 입니다. 추정값을 쓸 수 있는 모델링 된 식이나, reference signal 이 꼭 있어야 합니다. 이 부분은 훗날 기회가 된다면 다시한번 포스팅 하도록 하겠습니다. 이 Adaptive filtering 포스팅의 최 후반부가 되어야 겠군요 ㅋㅋㅋ


2. Adaptive Filter 란 무엇인가??

많은 사람들이 이렇게 물어보면 막연하게 대답합니다. 어떻게 동작하는지는 알겠는데 도대체 뭐를 구해내겠다는건지를 모른채 그 용도에만 초점을 맞추고 있는 것이지요. 여기서 한번 알아보겠습니다. Wiener filter 를 이야기할때 최적 필터 (optimum filter) 에 대해서 잠시 이야기 하였지요? 통계적 특성이 변화하지 않는 신호일때 Wiener filter 를 이용하여 최적 필터 계수를 구해낼 수 있습니다. 헌데.... 시간이 지남에 따라 통계적 특성이 달라지는 신호라면?? 혹은 실시간으로 신호가 들어오기 때문에 신호의 통계적 특징을 모르는 상태라면?? 난감하죠??
그래서 Adaptive filter 가 등장하게 됩니다. 1975 년에 Widraw 인가? 정확학 스팰을 모르겠네요 ㅋㅋ 여튼 이사람과 아이들에 의해서 LMS 알고리즘 기반의 Adaptive Filter 의 개념과 Application 이 등장하지요

즉, Adaptive Filter 는 시간이 지남에 따라 통계적인 특성이 달라지는 non-stationary 한 시그널을 포함해서 이 신호에 대해 샘플이 들어오는 매 시간마다 Optimum Wiener Filter 의 계수를 추정해 가는 알고리즘들을 통틀어서 Adaptive Filter 라고 부릅니다. 이렇게 추정해가는 방법이 LMS 알고리즘 기반으로 찾느냐 RLS 기반의 방법으로 찾느냐 등에 따라 적응필터의 이름이 바뀐답니다. ㅋ

이 때 사용되는 필터의 형태는 FIR, IIR 모두 상관 없지만, 필터의 시스템이 발산하지 않게 하도록 하기 위해서 FIR 필터를 대부분 사용합니다. 왜 FIR 필터의 시스템이 안정적인지에 대해서는 모두 아시리라고 굳게 믿습니다.

뒷부분에서 자세하게 다루겠지만 최적 필터 계수란 것은 아래의 그림과 같습니다. 벡터의 내적이나 함수의 내적을 생각해 보시면 되겠네요. 공업수학에서 내적 이야기할때 기준 벡터로의 투영 (Contour) 이야기 많이 했었지요? 이 벡터가 다른 한 벡터의 방향으로 얼마의 크기성분을 가지고 있는가 ? 를 계산하는것이 내적 아닙니까 ㅋㅋ 신호(함수) 의 내적도 같습니다.


이 그림을 보십시요. 측정한 신호 u(n) 의 크기를 조절해 (w) 소망 신호인 d(n) 과의 거리가 가장 가까워지도록 만들면? 그것이 최적의 필터가 되겠지요. Error 가 가장 적어지는 것이니까요. Weighting Factor 를 곱하기만 해서 신호 벡터의 방향을 바꿀 수는 없습니다. 결국 크기를 얼마나 조절하느냐 라는 개념이라고 단순화 시켜 생각할 수 있는데 그 때 그 차이 크기가 가장 작아지도록 하는 계수들 w matrix 를 갖는 필터를 optimum filter 라고 부를 수 있는 것입니다.

Adaptive Filter 를 구현함에 있어서 고려해야할 Factor 들이 있습니다. 지금은 어떤것들이 있는지 일단 알아보기만 하겠습니다. 

(1) Convergence rate (수렴속도) : 얼마나 빨리 Optimum Filter 상태로 수렴해 가는가?
(2) Misadjustment (적응정도) : 수렴한 후에는 얼마나 계수의 변화폭이 큰가? (수렴후에는 변화폭이 작을수록 좋다)
    - (1), (2) 은 Trade-Off 관계에 있습니다 ㅋㅋㅋ

(3) Tracking : 얼마나 원하는 신호를 잘 추적해 가는가?
(4) Robustness : 필터의 구조가 탄탄한가? 모든 신호에 일관성 있게 적용되어 출력되는가?
(5) Computational requirement : 알고리즘의 계산량은 얼마나 되는가?
(6) Structure : 필터의 구조가 얼마나 복잡한가? 
    -(5), (6) 은 실시간으로 mcu 나 DSP 칩에서 구현을 하지 위해 연산속도와 battery 소모 등을 고려하기 위해서 고려하는 것입니다.

3. 필터의 구조 (Filter Structures)

(1) FIR structure

i) Transversl (Taped-delayed line) : 우리가 흔히 아는 FIR filter 구조입니다. 최대 FIR filter 의 Order 만큼의 delay 가 발생되며, 각각의 샘플에 원하는 w 가 곱해진 후 모두 더해지는 구조로 되어있지요? 출력이 다시 입력으로 feedback 되거나 입력이 출력쪽으로 feedforward 되지 않는다는 점도 유의해서 볼 필요가 있군요



ii) Lattice, escalator (Gram-Schmidt) 

흐음.. 이게 저도 잘 모르는 부분인데요 ㅋㅋㅋ Lattice(격자) 구조와 위에서 설명한 TDL 구조 두개를 합쳐서 만듭니다. 왜 그러냐면 통계적으로 상관이 없는 신호 (uncorrelated) 된 신호는 변환 속도가 빠르답니다. 그래서 Lattice 구조를 통해 신호의 통계적 특성을 없앤 후에 TDL 구조로 필터링을 하는 구조로 되어있어요


요론 구조인데요 ㅋㅋ 아직 저도 완벽하게 모르고 사용도 안해본지라 ㅋㅋ 훗날 쓰게 되면 한번 포스팅 하도록 하겠습니다. 고수분들이 있으시면 댓글로 설명좀 해주십시요 ㅋㅋ

iii) Systolic array

Parallel computing 이 가능한 구조라는거 같은데 ㅋㅋ ii) 도 완벽하게 정복 못한 제가 iii) 에 대해 씨부리면 거의 대부분이 잘못된 정보일듯 ㅋㅋㅋ 여기서 함구할테니 훗날을 기약하시던지 아니면 지나가던 강호 무림의 고수분이 댓글로 알려주시기를 바래야겠습니다 ㅋㅋ

(2) IIR structure : 특별히 언급할 것은 없습니다. 출력의 Feedback 에 의해서 Stability 의 문제가 발생할 수 있습니다. 그래서 ㅋㅋㅋ FIR 형태로 Adaptive Filter 를 주로 만든다고 위에서 말씀드렸죠? ㅋ


4. Linear Adaptive Filter algorithms (선형 적응 필터의 알고리즘 종류)

(1) Stochastic gradient approach

 - Cost function 의 MSE (Mean Square Error) 의 크기를 최소화 하겠다는 발상입니다. 이를 통해 최적 Wiener filter 의 계수를 추정해 가는 과정입니다. 대표적으로 LMS (Least mean square) 알고리즘이 있습니다

ex) TDL filter with the LMS algorithm

장점 : 매우 간단하고 효율적입니다. C 로 코드를 짤 경우 3줄 밖에 되지 않습니다.
단점 : 수렴 속도가 다른 알고리즘에 비해 상대적으로 느립니다.

(2) Least-squares estimation

- Weighting factor 가 곱해진 에러 제곱의 합을 최소화 하겠다는 발상입니다. 대표적으로 RLS 알고리즘이 있습니다.

es) TDL filter with the LS algorithm

장점 : 수렴 속도가 빠릅니다.
단점 : 계산량이 다른 알고리즘에 비해 상대적으로 많습니다. 따라서 알고리즘 구현도 복잡합니다.
         matrix inversion 에 의해 대수학적으로 안정적이지 않을 수 있다는 잠재적인 문제점을 앉고있습니다.

RLS, fast RLS, QR-decomposition 등의 알고리즘이 LS 기반의 알고리즘입니다.


5. Adaptive filter applications (적응 필터로 할 수 있는 것들)

- 이거이거 굉장히 중요합니다. 어디다 어떻게 쓸 수 있는지 알아야 뭘 써먹든 말든 하지요. 외울 필요도 없습니다. 블럭도를 보고 "입력이 이렇고 출력이 이러니까 이것은 이것이다." 라고 이해 할수 있어야 합니다. 흔히들 생각하는 필터링 이외에서 모델링, 예측, 노이즈 캔슬레이션 등에 다양하게 이용할 수 있습니다. 그럼 하나씩 알아 볼깝숑?

(1) System identification

: 이름 무시무시 합니다. 시스템을 정의 내리겠습니다. 모르는 어떤 시스템으로 들어가는 입력 신호를 ADF 의 입력으로 사용하고, 시스템의 출력과 ADF 의 출력의 차이 (Error) 를 최소화 함으로써 모르는 시스템을 배껴버리겠다는 소리죠. 모르는 시스템을 표현할 수 잇는 filter 의 계수를 알아버렸기때문에 우리는 모르는 시스템을 모델링 해버렸다고 생각할 수 있는것입니다. 그럼 이 글을 그림으로 블럭화 시키면 어떻게 되는지 한번 알아볼깝숑?


이렇게 표현이 가능합니다. 자세한 구현 알고리즘은 훗날 다루도록 하고 아래에는 예제 그림을 보여드리도록 하겠습니다. 


사진이 왜 이따위로 나오지? ㅋㅋ 여튼 ㅋㅋㅋ
White noise 를 이용해서 어떤 필터를 건 출력을 추정 해 본 것입니다. 아래그림의 빨간색을 보시면 처음에는 헤롱헤롱해서 이상한 값을 뿌리지만 뒤로갈수록 정확하게 추정하는 것을 알 수 있습니다. 이 때 추정된 계수 w 는 처음 입력신호에 취했던 fir 필터의 계수와 일치합니다. 즉, 우리는 모르는 시스템(여기서는 filter) 을 추정 했다고 볼 수 있는 것이지요. 

(2) Inverse modeling

: 이것도 외우지 마시고, 이렇게 생각하십시요. ADF 의 입력으로 어떤 모르는 시스템의 출력이 사용되고, ADF 의 출력과 어떤 시스템에 들어간 입력신로를 딜레이 시킨 신호와의 에러를 최소화 시켜 어떤 모르는 시스템의 입력값을 유추해 내겠다. 이때 delay 된 input 을 사용하는 것은 system 의 causality 를 위함입니다. 즉, Inverse modeling 이 되는 것이지요. 위와 거의 비슷한 과정이기 때문에 따로 예제는 보이지 않겠습니다. 아래 보이는것이 이 개념의 블럭도 입니다.


(3) Prediction

ADF 의 입력으로 delay된 input signal 을 사용하고 ADF 의 출력과 딜레이 되지않은 input 의 Error 를 최소화 시킴으로써 과거의 입력으로 미래의 출력을 예측할수 있게 할 수 있습니다. 


짱 신기하지 않습니까? ㅋㅋ 저는 짱 신기했는데 ㅋㅋ


흠. 이것도 화질이 그리 좋지 않네요 ㅋㅋ 하지만 보십시용 빨간색이 ADF 출력이고 파란색이 입력 시그널 입니다.
초기에 빨간색 라인이 보이는 이유는 딜레이 되어있기 때문이겠지요? ㅋ 하지만 시간이 지나 수렵해 가면서 어떻게 되었습니까? ㅋ 빨간색이 거의 보이지 않죠? ㅋ 딜레이된 입력을 사용해서 미래의 출력값을 예측해 입력파형과 똑같은 출력을 ADF 가 내보내고 있기 때문이랍니다 ㅋㅋ 신기하지 않습네까? ㅋㅋㅋ
이거 잘하면 어디다 이용할수 있나염? ㅋㅋ 주식!!!! ㅋㅋㅋ 세상만사 ADF 와 같다면 정말 대박이겠다 ㅋㅋㅋ

(4) Interference cancelling

이게 우리가 가장 DSP 에서 흔히 쓰이는 개념이지요 ㅋ Noise Cancelling 도 이 개념입니다. 내가 측정한 신호를 ADF 의 입력으로 사용하고 ADF 의 출력과 내가 바라는 신호와의 차이를 최소화 함으로써 원하지 않는 노이즈성분만을 따로 뽑아내는것입니다. 60Hz 전원 노이즈 제거 등에 주로 쓰이지요? ㅋㅋ 더 나아가면 태아 심전도를 디텍팅 하는쪽에서도 쓰입니다. 



아래는 예제 입니다.

25Hz 와 60Hz 를 섞어서 60Hz 만 제거를 해보았습니다. 검증을 FFT 를 이용해 주파수 분석을 함으로써 60Hz 가 빠진것을 보여드리도록 하곘습니다. ㅋㅋ


짜짜잔 ㅋㅋ 신기하지 않습니까? ㅋㅋㅋㅋ


일단 이번 포스팅에서는 이정도로만 알아두시면 좋을 것 같습니다. ㅋ 아 이런식으로 쓰이는 구나 정도만 ㅋ

다음 포스팅에서는 Wiener Filter 부터 해서 차근차근 알아가 보도록 하겠습니다용 ㅋㅋ

많은 도움이 되셨기를 바랍니다. 그럼 다음번에~ ㅋㅋ

궁금증은 댓글로 하셔용 ㅋ 비밀글은 다 지워버리겟습니다.

저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by J.Bear

아 이름만 들어도 지긋지긋 하지요? ㅋㅋ

Sallen-Key
ButterWorth
2nd-Order
Low-Pass
Bessel

ㅋㅋㅋ

때리지 마세요 ㅋㅋ 저도 짜증난답니다 ㅋㅋ

Active 소자를 이용하여 Filter 를 설계하면 Active Filter 가 되지요?ㅋㅋ

더욱 쉽게 말하면 OPAmp 를 이용해 필터를 만들면 Active Filter,

RC 로만 만들면 Passive Filter 입니다 ㅋㅋㅋ

RC 값 공학용 계산기로 졸라 두들겨야지요~ ㅋㅋ

"에푸씨는 이파이알씨분에일"

아 이제 지긋지긋허다 ㅋㅋㅋ

막상 계산해도 표준저항으로 맞춰볼려고 노력하기도 짜증나고 ㅋㅋ

여기서 해결방안을 제시합니다 ㅋㅋ

Why??

우리는 21 세기형 엔지니어니까 ㅋㅋㅋ




HPF BPF 등도 동일한 방법으로 계산가능합니다 ㅋ

하지만, 이런 툴이 있다고 해서 필터 설계의 기본 원리와 계산과정이 절대로 중요하지 않다는 말이 아닙니다.

이것을 이해할고 있을때야 비로소 디버깅이 가능하기 때문이지요 ㅋ

여기서 설계한 MultiSim 파일과 TI Filter Pro 파일을 동봉합니다 ㅋ

질문사항, 지적하실 부분들 언제나 환영하니 댓글 달아주시기 바랍니다.

좋은밤 되세요


저작자 표시 비영리 동일 조건 변경 허락
신고

'7. 의료전자시스템' 카테고리의 다른 글

Voltage Detector  (0) 2012.03.29
시험 공부 할 때 참고하세요  (0) 2011.06.18
Analog Active Filter 설계  (10) 2011.05.22
OP-Amp Offset Current 에 의한 Output voltage 계산  (2) 2011.05.16
LM311 완벽 분해  (8) 2011.04.19
National Semiconductor WEBENCH 사용법  (2) 2011.04.15
Posted by J.Bear