# LTI system(Linear Time-Invariant system)
LTI 시스템이란, llinear 한 속성과 time-invariant한 속성을 동시에 만족하는 시스템을 의미한다. 즉 선형적인 연산이 가능하고, 시간에 대해 일관성을 가져야한다.

- Linear: f(ax1 + bx2) = af(x1) + bf(x2)

- Time-invariant: sequential 신호나 continuous-time 신호에 대해서 x(m) 입력이 주어졌을 때 출력이 y(m)이면, x(m-n)이 주어졌을 때 출력이 y(m-n)이 되는 것.

https://brilliant.org/wiki/linear-time-invariant-systems/

# Convolution
LTI 시스템에서 impulse response를 계산하기 위한 연산. Convolution에서 filter는 t의 부호가 음수로 정의되어 있는데, 그 이유는 두 함수 f와 g에 대해 교환법칙을 적용할 때 t의 부호를 똑같이 유지할 수 있기 때문이다. 만약 t의 부호가 양수라면, 교환법칙할 때마다 -t로 바꿔주어야한다.

https://math.stackexchange.com/questions/714507/definition-of-convolution


# Filter
Filter 는 Analog filter(=소자로 구현된 필터) 와 Digital filter(=numerical filter, 코드로 구현된 필터) 두 종류가 있다.(아날로그 필터는 회로로 설계되어, 필터링을 하는 것이고, 디지털 필터는 알고리즘적 계산을 통해 필터링 하는 것이다. 그러므로 프로그래밍의 관점에서 필요한 것은 디지털 필터이다.)

https://www.analogictips.com/using-analog-filters-vs-digital-filters/

# Analog filter(Continuous time, real-valued)
물리적인 속성을 가진 아날로그 신호에 대해 순수히 물리적, 전기적 특성을 이용해서 구현된 filter. 전기신호를 그대로 다루므로 inductors, capacitors and resistors 와 같은 component(소자)를 이용한다. 이러한 소자들은 물리적/전기적 법칙에 의해 구현된 것이기 때문에 각 컴포넌트의 성능, 내구도 등에 의해 출력 결과물에 오차가 생길 수 있다. 즉, 아주 아주 정교한 기능구현이 힘들다. 이러한 문제가 아날로그 필터보다 디지털 필터를 선호하는 이유이다. (컨트롤 불가능한 오차가 계속해서 다음으로 전파되기 때문) 대신 analog의 장점은 구현이 단순하고 쉽다는 것이다.

Inductor는 고주파가 잘 통과하지 못하는 물리적 특성을 가지고 있고, capacitor는 반대로 고주파일수록 잘 통과하는 물리적 특성이 있다. 이 두가지를 조합하면 다양한 filter를 구현할 수 있다. 또한 이를 반복해서 사용하여 차수를 올릴 수도 있다.

http://www.rfdh.com/bas_rf/begin/filter.php3

# Digital filter(Discrete time, quantized valued)
Analog signal에 sampling을 하여 digital화 된 신호에 대해 알고리즘 형태로 구현하는 filter. 알고리즘 혹 프로그래밍으로써 구현 되므로, 결과물을 신뢰할 수 있다. Analog signal을 digital로 변환하는 converter가 반드시 필요하다.(analog-to-digital signal converter (ADC)라고 한다.)

Signal을 너무 낮은 sampling rate로 변환할 경우, aliasing이란 효과가 일어나서 제대로 된 정보를 capture 할 수 없게 된다. 따라서 oversampling을 하는 것이 보통이다. Sampling rate만 충분히 크다면, 사람은 절대로 digital과 analog signal을 구분할 수 없다.(ex 과거 형광등의 깜빡임은 1초에 120번이다. https://marriott.tistory.com/54)

Image result for aliased signal
http://www.ni.com/ko-kr/innovations/white-papers/09/using-a-digitizer-for-time-domain-measurements.html

# FIR(Finite impulse response)
High frequency의 noisy signal 값들을 안정적으로 처리하기 위한 방법으로 일종의 weighted moving average라고 이해하면 된다. Fixed length window를 정의하고, 각 step마다 서로 다른 weight(필터 계수)를 정의하여 weighted sum을 한다. 이 때 weight는 자유롭게 정의할 수 있는 것 같고, 만약 최근 값에 좀 더 민감하게 반응하길 원한다면 exponential dacaying하는 wegiht를 사용할 수도 있을 것이다. (아마도 이 weight는 합쳐서 1이 되는 것이 자연스러운 것 같다.)

FIR을 통과한 signal은 high frequency 영역이 smoothing(=filtering)되기 때문에, Low pass filter라고도 부른다.(low frequency만 남기는 filter)

그런데 FIR에서 재미있는 점은 몇개의 값(신호)를 평균 낼지를 사람이 정한다는 것이다. 예를 들어 sampling rate 16000Hz짜리 신호에서 window size = 4로(필터의 차수가 4) 평균내겠다라고 하면, 1/4000초 짜리의 fixed length sliding window로 moving average를 구하겠다는 의미이다. 그렇게 되면 4000Hz보다 높은 주파수 성분들이 smoothing(=filtering)이 된다. (그리고 이 4000Hz를 cut-off frequency라고 부른다.)왜냐하면 4000Hz보다 낮은 주파수 성분들은 평균을 내더라도 단순히 shifting 정도만 일어나지, 값을 손실하진 않는다. 그러나 16000Hz짜리 sin형태로 된 주파수 성분이 있다면, 이녀석은 정확히 cancel되어 사라질 것이다. 


# IIR(Infinite impulse response)
IIR은 FIR에서 cut-off frequency를 낮출수록, 즉 보다 많은 high frequency를 filter out시키고 싶을 수록, window사이즈가 정비례하게 증가하는 문제(계산량 증가)를 해결하기 위해 고안된 방법이다. 방법은 매우 간단한데, FIR을 재귀적으로 호출하는 것이다. 즉 우선 FIR을 한번 돌려서 1차 moving average가 된 signal을 구하고 이 1차 moving average가 된 signal에 대해서 또 한 번 FIR을 돌려서 2차 moving average가 된 signal을 구한다. 그리고 이 1차, 2차 moving average를 더해서 최종적인 signal로 삼는다.

[출처: https://dsp.stackexchange.com/questions/35826/is-there-a-way-to-derive-an-fir-filter-using-an-iir-filter]

참고: https://yeominc.tistory.com/19



# Bandpass-filter
일반적인 bandpass filter는 더 큰 cut-off를 가진 LPF를 통과시킨 시그널에다가 더 작은 cut-off의 LPF를 통과시킨을 빼버림으로써, 가운데 영역만 남기는 방식으로 구현한다.

쉽게 얘기해보자면 전체 시그널이 1~100에서 1~70만 남긴 시그널을 구하고, 그 다음 1~30만 남긴 시그널을 구한다. 그리고 [1~70] - [1~30]을 수행해서 30~70만 남기는 원리이다.


# Sinc function
다른 이름으로는 sampling function이라고도 한다. bandpass filter가 magnitude frequency domain에서는 사각형인 rect 함수로 표현되지만, 이를 time domain(IFT를 사용)으로 변환할 경우, sinc으로 표현된다.

[출처: https://www.researchgate.net/figure/Fourier-transform-of-a-rectangle-function-a-and-a-sinc-function-b_fig3_321716019]

왜냐하면, 0~F까지의 frequency를 가진 cos를 적분하면 sinc function이 되기 때문에...??


# Hamming window


# 용어
- Impulse: input signal
- Impulse response: output signal


# 공부 사이트
http://www.rfdh.com/bas_rf/beginer.htm










디지털 필터에서 LPF, BPF, HPF 들의 원리는 결국 유사하다. FFT한 다음 특정 임계영역을 기준으로 데이터를 나누고 다시 역 FFT를 처리하는 것



----------

선형 위상 필터(Linear Phase Filter) 에서

FIR filter는 다음의 4가지 케이스에대해 나뉠 수 있다


M이 홀수/짝수

Even Symmetry (선대칭) / Odd Symmetry (점대칭)


http://blog.naver.com/elephant21/20029931070








LPF, BPF, HPF 개념 : http://www.rfdh.com/bas_rf/begin/filter.php3



안드로이드 필터 소스코드 : http://www.ledin.com/android-fir-filter-designer/




by 곽동현 이스텔리앙 2014. 7. 1. 13:52