Sinc function 이란?
sinc(x) = sin(πx) / πx ------- 식(1)
Sinc function을 수식으로 표현하면 식(1)과 같이 나온다.
Sinc 함수를 처음 접하게 된 계기는 샘플링 된 신호를 다시 Continuous 한 신호로 변경하는데 Sinc interpolation을 사용하면서 이다.
Interpolation에 대한 간략한 설명은 링크를 참조하길 바란다. (https://scribblinganything.tistory.com/193)
파이썬 코드로 Sinc 함수 그려 보기
식(1)을 우선 Python을 통해 그래프로 그려보자
코드>>
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-4, 4, 41)
np.sinc(x)
plt.plot(x, np.sinc(x))
plt.title("Sinc Function")
plt.ylabel("Amplitude")
plt.xlabel("X")
plt.show()
결과>>
주석>>
코드는 상당히 단순하다.
numpy 모듈을 사용해서 -4 ~ 4 사이에 41개의 점을 찍어서 sinc 함수에 넣어서 값을 구하고 plot 을 통해 그래프로 표현한 것이다.
Sinc interpolation 직관적으로 이해해 보기
사실 이부분은 수식적으로는 전개 되어있지만 수학이 약한 나로서는 이해가 잘 안되서 최대한 직관적으로 이해해 보려고 한다.
그림2의 L은 lagrange 다항식이고 앞서 링크에서 소개한 lagrange polynomial interpolation의 수식이다. 앞서 링크에서 참조 하면 N의 샘플로 N-1차의 다항식이 나온다고 하였다.
만일 N개의 샘플 갯수가 무한대로 증하하면 Lagrange 함수는 Sinc 함수로 수렴한다는 것이 위 수식의 요점이다.
그림3은 샘플링 주파수를 올릴 수록 그림3과 같이 원래 waveform에 가까운 값을 interpolation 할 수 있음을 알 수 있다.
참고로 Sinc 함수는 주파수로 변환하면 주파수 0을 중식으로 직사각형 모양을 가진다. 즉, Low pass filter와 같은 모양이다. 이 부분은 내 사견인데 저주파처럼 동작하므로 샘플에서 고주파 성분을 없애서 급격한 변화를 줄이고 원신호에 가깝게 복원하는 것이 아닐까 생각 든다.
참조 링크>>
https://vru.vibrationresearch.com/lesson/waveform-perfect-reconstruction-using-sinc-interpolation/https://numpy.org/doc/stable/reference/generated/numpy.sinc.html
'파이썬(Python)' 카테고리의 다른 글
파이썬 Class와 Object란? (예제로 알아보기, 내장함수 확인하기) (0) | 2021.06.29 |
---|---|
무선인터넷 카드 Mac address 바꾸기 (윈도우 registry 사용해서 변경) (2) | 2021.06.24 |
윈도우에서 mac 주소 확인하고 변경하기 (무료와이파이 연장 팁) (0) | 2021.06.23 |
Interpolation 이란? (Lagrange interpolation 설명 및 파이썬으로 구현해보기) (0) | 2021.06.14 |
Visual studio, HTML 자동 완성 설정하는 방법(HTML:5) (0) | 2021.05.03 |