728x90
728x170
푸리에 해석(Fourier Analysis)
푸리에 해석(Fourier Analysis)
- 프랑스의 수학자이자 물리학자인 장 밥티스트 조제프 푸리에(Jean-Baptiste Joseph Fourier)가 1803년 그의 저서 <열의 해석적 이론>에서 "임의의 함수는 삼각함수의 급수로 나타낼 수 있다."고 주장했는데, 이것을 푸리에 정리(Fourier Theorem)라 한다.
- 푸리에 정리를 바탕으로 주기 함수를 삼각함수의 급수로 나타내는 것을 푸리에 급수(Fourier Series)라고 한다.
- 주기 함수가 아닌 유한 구간에서 정의된 함수를 주기 함수로 만들어서 삼각함수의 급수로 나타내는 것을 푸리에 전개(Fourier Expansion)이라고 한다.
- 이것을 무한 확장한 것을 푸리에 변환(Fourier Transform)이라고 한다.
연속 시간 푸리에 급수(CTFS, Continuous-Time Fourier Series)
- 모든 주기신호는 진폭과 주파수가 다른 정현파들의 급수로 나타낼 수 있다.
- 임의의 연속 시간 주기 신호를 다른 연속 시간 주기 신호들의 합으로 표현하는 것을 연속시간 푸리에 급수(CTFS, Continuous-Time Fourier Series)라고 한다.
삼각함수에 의한 연속 시간 푸리에 급수
- 연속 시간 주기 신호의 CTFS를 삼각함수식으로 일반화하면 다음과 같이 나타낼 수 있다.
- 여기서 각 항의 계수는 다음과 같으며, CTFS 계수(CTFS Coefficient)라고 부른다.
- 여기서 `\sigma_{T}`는 주기신호 `x(t)`의 한 주기 동안의 적분을 의미한다.
- `w_{0}`는 기본 라디안 주파수(Fundamental Radian Frequency)를 나타내며, 주기가 `T_{0}`이면 `f_{0} = \frac{1}{T_{0}}` 이다.
- 푸리에 급수를 구성하는 각 항의 신호들을 기저 신호(Basis Signal)라 하며, 이와 같은 기저 신호들로 구성되는 정현파 신호들은 기본 주파수 `f_{0}`의 정수배인 고조파 신호(Harmonic Signal)들이다.
- 이 고조파 신호들은 서로 직교(Orthogonal)하는 성질을 가지고 있다.
복소 지수에 의한 연속 시간 푸리에 급수
- 삼각 함수에 의한 연속 시간 푸리에 급수는 사인 항과 코사인 항의 가중합으로 표현된다.
- 오일러 공식을 적용하면 두 번째 항과 세 번째 항은 다음과 같이 된다.
- 그러므로 삼각함수 신호에 의한 CTFS식은 복소지수함수 신호에 의한 식과 같이 가중합 항이 하나 뿐인 매우 간편한 식으로 표현할 수 있게 된다.
- `c_{k}`는 복소지수 형태의 연속 시간 주기 신호에 대한 CTFS 계수이다.
연속 시간 푸리에 변환(CTFT, Continuous-Time Fourier Transform)
- 현실에서의 실질적인 신호들은 대부분이 주기 신호가 아닌 비주기 신호들이다.
- 따라서 비주기신호들의 주파수 성분을 찾는 방법이 필요하며, 연속 시간 푸리에 변환(CTFT, Continuous-Time Fourier Transform)을 사용한다.
- 비주기신호는 기본 주기가 무한대인 주기 신호라고 가정할 수 있으며, 시간 영역에서 주기를 무한대로 접근시키면, 주파수 영역에서는 주파수 선 간격이 0으로 줄어들어 극한으로는 모든 선이 연결되는 연속 스펙트럼이 된다.
import numpy as np
import matplotlib.pyplot as plt
w = np.arange(-2 * np.pi, 2 * np.pi, 0.1) # 주파수축 설정
N = len(w) # 전체 주파수축 길이
Xw = np.zeros(N) # CTFT 결과 계수 저장 배열
T = 1 # 주기를 1로 둔다.
for i in range(-int(N/2), int(N/2)) : # x축의 N개의 주파수 성분에 대하여
if i == 0 :
Xw[i + int(N/2)] = 1 # 싱크함수 f=0에서의 조건
if i != 0 :
Xw[i + int(N/2)] = np.sin(i * T/2) / (i / 2) # CTFT 계수 X(f) 계산
plt.plot(w, Xw, "blue") # 연속선 그리기
plt.stem(w, Xw, "blue") # 불연속선 그리기
plt.grid() # 눈금 그리기
plt.xlabel("w, fequency in radians") # x축 레이블 넣기
plt.ylabel("X(w)") # y축 레이블 넣기
plt.title("CTFT, of a non-periodic signal") # 제목 넣기
728x90
그리드형(광고전용)
'In-depth Study > Signal Processing' 카테고리의 다른 글
디지털 신호 처리 개요 (0) | 2022.06.14 |
---|