FFT using MATLAB 3조 개미핥기 2006440062 박창원 2006440095 유현우.

Slides:



Advertisements
Similar presentations
Add Your Text 5. 지수함수와 로그함수 1. 지수함수 2. 로그함수 · 지수함수와 그 그래프 · 지수방정식과 지수부등식 · 로그 함수와 그 그래프 · 로그방정식과 로그부등식.
Advertisements

Signal Processing & Systems ( 신호 및 시스템 ) 연속 주기 신호의 주파수 해석 Prof. Jae Young Choi ( 최재영 교수 ) Signal Processing & Systems (2014 Fall) Prof. Jae Young Choi.
제 4 장 이산시간신호와 변환. 2/50 1. 서론  이산푸리에 변환 ( discrete Fourier transform; DFT ) – 연속 함수의 표본들에 적용가능 푸리에 변환  아날로그 시스템 이산푸리에 변환  디지털 시스템 – 이산푸리에 변환 푸리에 적분에.
재료수치해석 HW # 박재혁.
적분방법의 연속방정식으로부터 Q=AV 방정식을 도출하라.
제8장 이산 푸리에 변환.
제 3 장의 구성 3.1 푸리에 변환 (Fourier transform) 3.2 푸리에 변환의 성질
제2장 주파수 영역에서의 모델링.
Report #5 - due: 4/13 다음 10*5의 희소 행렬 A, B를 고려하라.
“주파수가 인덕턴스에 미치는 영향”실험에 관련하여 실험결과가 다르게 나온 이유?
Z 변환의 사용 처 제05장 Z 변환. z 변환의 사용 처 제05장 Z 변환 임의의 임펄스 응답 임의의 임펄스 응답에 대한 DTFT 공비의 절대값이 1보다 작아야 수열의 합이 존재 등비수열의 합 : 등비수열의 합 : 제05장 Z 변환.
제 9 장 구조체와 공용체.
수치해석 6장 예제문제 환경공학과 천대길.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
컴퓨터 프로그래밍 기초 [Final] 기말고사
10장 랜덤 디지털 신호처리 1.
Chapter 02 순환 (Recursion).
RS 및 D 플립플롭 RS Flip Flop 래치는 어떤 입력 레벨에 의해서 제어되는 데 플립플롭은 클록 입력이라고
디지털영상처리 및 실습 대구보건대학 방사선과.
질의 사항 Yield Criteria (1) 소재가 평면응력상태에 놓였을 때(σ3=0), 최대전단응력조건과 전단변형에너지 조건은σ1 – σ2 평면에서 각각 어떤 식으로 표시되는가? (2) σ1 =σ2인 등이축인장에서 σ = Kεn로 주어지는 재료의 네킹시 변형율을 구하라.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
Error Detection and Correction
멀티미디어 시스템 (아날로그 이미지,신호를 디지털로 변환 방법) 이름 : 김대진 학번 :
CAS (Computer Algebra System) 소개
5장. 이산푸리에변환 5.1 연속신호의 푸리에변환 5.2 이산신호의 푸리에변환 5.3 이산푸리에변환
상관함수 correlation function
602 LAB FDTD 를 이용한 Acoustic Simulation 지도: 이형원 교수님 차진형.
CH 4. 확률변수와 확률분포 4.1 확률 확률실험 (Random Experiment, 시행, Trial) : 결과를 확률적으로 예측 가능, 똑 같은 조건에서 반복 근원사상 (Elementary Event, e) : 시행 때 마다 나타날 수 있는 결과 표본공간.
일차방정식의 풀이 일차방정식의 풀이 순서 ① 괄호가 있으면 괄호를 먼저 푼다.
제4장 제어 시스템의 성능.
Ⅲ. 이 차 방 정 식 1. 이차방정식과 그 풀이 2. 근 의 공 식.
프로그래밍 개요
어서와 C언어는 처음이지 제14장.
바코드에 대하여…… 바코드에 대하여 알아보도록 하자 6-1 홍지효.
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
담당교수 : 이봉운 공학 수학 (10-2 학기) 담당교수 : 이봉운
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
Computer Vision & Pattern Recognition Lab. 위 은 영 (월)
4 장 신호(Signals) 4.1 아날로그와 디지털(Analog and Digital)
8장. spss statistics 20의 데이터 변환
3 장 주파수 영역 해석: 이산 Fourier 급수 및 Fourier 변환.
Chapter 3 Frequency Domain Analysis
P 등속 직선 운동 생각열기 – 자동차를 타고 고속도로를 달릴 때, 속력계 바늘이 일정한 눈금을 가리키며 움직이지 않을 때가 있다. 이 때 자동차의 속력은 어떠할까? ( 속력이 일정하다 .)
1. 2진 시스템.
Fitting / Matrix / Excel
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
Ch.6 주파수 응답과 시스템개념 김하린 오희재 이연재
6장. 고속푸리에 변환 6.1 개 요 6.2 시간솎음 알고리즘 6.3 주파수솎음 알고리즘 6.4 IDFT 알고리즘
CAS (Computer Algebra System) 소개
미분방정식.
수학10-나 1학년 2학기 Ⅳ.삼각함수 3. 삼각함수의 그래프(7/12) 삼각함수 수업계획 수업활동.
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
약식 진리표를 이용한 타당성 증명 진리표 그리기 방법의 한계
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
Chapter 1 단위, 물리량, 벡터.
제 5장 제어 시스템의 성능 피드백 제어 시스템 과도 성능 (Transient Performance)
DA :: 퀵 정렬 Quick Sort 퀵 정렬은 비교방식의 정렬 중 가장 빠른 정렬방법이다.
5장. 선택 알고리즘.
Chapter 1 단위, 물리량, 벡터.
행성을 움직이는 힘은 무엇일까?(2) 만유인력과 구심력 만유인력과 케플러 제3법칙.
쉽게 배우는 알고리즘 2장. 점화식과 점근적 복잡도 분석
상관계수.
I. 수와 식 1. 유리수와 순환소수.
수치해석 ch3 환경공학과 김지숙.
Introduction to Wavelets - G.E. Peckham
아날로그 신호를 디지털 신호로 변환하는 A/D 변환기 A/D 변환 시 고려하여 할 샘플링 주파수 D/A 변환기
(Permutations and Combinations)
Cuk LED driver output current ripple calculation
SPL-Duino 블록 편집기 이용하기 전류센서 블록 만들기 SPL-Duino 블록 편집기를 실행합니다.
Presentation transcript:

FFT using MATLAB 3조 개미핥기 2006440062 박창원 2006440095 유현우

-Nyquist-Shannon sampling theory -Fourier series -Fourier Transform 목차 -Nyquist-Shannon sampling theory -Fourier series -Fourier Transform -DTFT & DFT -FFT -각 이론들의 관계 -FFT Code

Nyquist-Shannon sampling theory 신호의 기본성질을 보존하면서 부하를 줄일 수 있는 최적화된 Sampling 주파수를 결정하는 이론(Shannon의 정리)이 있다. Nyquist Sampling Criterion 이라고 불리는 내용은 Sampling시 aliasing 현상을 막는 Sampling 속도는 측정하고자 하는 신호원의 최고 주파수의 2배 이상이 되도록 해야 한다. 그러나 보통 안정성으로 고려하여 2배 이상인 5~10배 정도로 크게 잡는 경우가 많다. <적합하게 Sampling 한 경우(위)와 Sampling주파수가 작아 Aliasing이 생긴 경우(아래)> *Sampling 주파수를 아무리 크게 해서 원신호로 복원해도 원신호와 완전하게 똑같지는 않으며 미세한 오류가 있다.

Fourier series 푸리에시리즈의 기본은 모든 신호는 sin과 cos의 합 또는 복소지수의 합으로 나타낼 수 있다는 것부터 시작이다. 여기서 복소지수는 오일러 공식에 의하면 sin과 cos으로 표현할 수 있으므로 결국 저 둘은 같은 뜻이라 할 수 있다.

Fourier series 푸리에시리즈의 식은 다음과 같다. 가중치 여기서 가중치인 Cn은 x(t)를 구할 때 단순히 주파수만 다른 신호들을 더한다고 해서 일정한 신호가 나오는 것은 아니기 때문에 그 신호 앞에 계수인 이 Cn을 넣어줌으로서 sin, cos의 크기를 정해주는 일종의 가중치인 것이다.

Fourier Series Example

Fourier Series Example

Fourier Transform 푸리에변환의 시작은 비주기인 신호를 무한의 주기신호로 보는 것부터 이다. 즉 말하자면 푸리에시리즈에서 주기신호를 분석하는데 반해서 푸리에변환에서는 비주기 신호에 대한 분석도 하겠다는 것이다.

Fourier Transform 푸리에시리즈(주기신호)에서 가중치는 이다. Cn을 으로 변환한다. 그리고 주기 T를 무한대로 증가시키면 선스펙트럼의 주파수 가 연속변수 f로 표현된다. 따라서 이 식을 주파수 도메인인 으로 표현할 수 있다.

Fourier Transform 그리고 주기가 무한대임에 따라서 그 역수인 주파수가 감소함에 따라서 그 길이를 df로 나타낼 수 있다. 그리고 푸리에 급수의 식을 이용해서 시간 영역에 대한 신호의 정의를 할 수 있다. 가 되고 결국 가 된다.

Fourier Transform Example (a)의 함수를 Fourier Transform 하여라 f(t)의 식은 다음과 같다.

Fourier Transform Example f(t)를 Fourier Transform 하면 위와 같이 Sinc 함수가 나오고 그것을 그림 (b)에서 표현하였다.

DTFT & DFT (1) 시간영역의 표본화 (DTFT) 그리고 이 표본화의 식은 다음과 같다. (임펄스 표본화)

DTFT & DFT (1) 시간영역의 표본화 (DTFT) 그리고 이 표본화 식을 Fourier Transform 이렇게 해서 나온 식은 시간영역에서는 표본화로 인해 discrete 하고 주파수영역에서는 주기 를 가지는 continuous 한 신호가 나오게 되는데 이런 변환을 DTFT라고 한다. 한편 푸리에 변환의 곱셈/컨볼루션 성질에 의해서 다음과 같은 식이 성립함을 알 수 있다. 위 식을 통해서도 푸리에 변환 X(f)가 주기 마다 반복되는 주기함수가 된다는 것을 알 수 있었다.

DTFT Example 아래의 비주기 펄스열의 DTFT를 구하라. x(n)이 비주기 함수이므로 로 표현할 수 있다.

DTFT & DFT (2) 주파수 영역의 표본화 시간영역을 표본화하여 얻은 신호를 푸리에 변환을 통해서 얻은 위의 식은 식에서 보는 바와 같이 연속적인 값이다. 따라서 컴퓨터에서 이 식을 처리하기 위해서는 다시 표본화를 하여야 한다. 그래서 이번에는 y(t)의 푸리에 변환쌍 Y(f)를 주파수상에서 표본화와 푸리에 역변환을 하기로 하였다. 나머지 과정은 위에서 한 방법에 푸리에 역변환을 한점을 빼고는 동일하다. 이번에는 이 푸리에 변환쌍이 To마다 반복되는 주기함수가 된다는 것을 알 수 있다.

DTFT & DFT (3) 시간 및 주파수 영역 표본화 위에서 신호를 디지털 시스템으로 표현하기 위하여 앞선 단계에서 시간영역에서의 표본화와 주파수영역에서의 주기화, 그리고 주파수영역에서의 표본화와 시간영역에서의 주기화를 하였다. 다음 단계로 시간영역에서 표본화와 주기화를 동시에 하여 얻은 신호의 퓨리에 변환을 하기로 하였다. 이 변환을 하기 위해서 앞에서 썼던 조건을 그대로 썼다. 표본화와 주기화를 동시에 한 값은 다음과 같다. 그리고 앞에서 썼던 조건을 이용해서 푸리에 변환을 한 값은 다음과 같다. 결과적으로 x(t)에서의 표본화와 주기화를 한것의 푸리에 변환은 그 값이 주파수상에서 표본화하고 주기화한 스펙트럼으로서 얻어진다는 것을 알 수 있다.

DTFT & DFT (4) 이산 푸리에 변환 이제 본격적으로 이산 신호처리를 하기 위해서 앞서 신호의 주기 To가 표본화 간격 Ts의 정수배(N배)가 되도록 설정해야 한다. 그리고 시간과 주파수의 한 주기에는 모두 N개의 표본만 구성되도록 표본화 간격을 설정하여야 한다. (1)에서 했던 시간영역에서의 표본화와 그 값의 푸리에 변환을 하였던 것을 이용하고 위에서 설정하였던 N개의 표본을 구성하도록 식을 세우면 다음과 같다. 이로서 이 식을 통해서 시간영역과 주파수영역 모두에서 discrete한 신호를 얻을 수 있다. 를 위와 같이 정의하여서 이를 DFT(Discrete Fourier Transform)라고 부른다.

DTFT & DFT (4) 이산 푸리에 변환 그리고 이 식에서 퓨리에 역변환을 위해서 양변에 을 곱하고 k=0,1, .. , N-1 에 대한 합을 구한다. 따라서 이 식은 이 되고 이 식을 정리해서 이 되고 이를 이산 푸리에 역변환이라 한다.

x(n+N) = x(n), X(k+N) = X(k) DTFT & DFT (5) DFT의 특성 <1>주기성(periodicity) x(n+N) = x(n), X(k+N) = X(k) 즉 x(n) , X(k) 모두 주기함수 <2>선형성(linearity)

DTFT & DFT (5) DFT의 특성 <3> 수열의 순환 이동 DFT of x[n] (finite duration sequence) 길이가 N이하인 유한길이 신호 x[n]의 DTF는 다음과 같은 주기 신호의 DFT와 동일 만일 을 k만큼 이동시키면 여기에 해당하는 유한 길이 신호 은 그리고 이 표기를 다음과 같이 한다.

DTFT & DFT (5) DFT의 특성 <4> DFT의 대칭 특성

DTFT & DFT (5) DFT의 특성 <5> 실수 신호와 DFT x[n]이 실수이면, 다음 관계 성립 <증명>

DTFT & DFT (5) DFT의 특성 <6> x[n]이 실수이고 우함수인 경우: 만일 위와 유사한 방법으로 이다. 즉 X(k)는 순허수이다.

아래의 비주기 펄스열 x(n)의 DFT를 구하여라. DFT Example 아래의 비주기 펄스열 x(n)의 DFT를 구하여라. n을 4라고 지정하고 DFT를 수행하였다. 이 되고 오일러 공식에 의하면 따라서 위의 식을 전개하면 가 나오고 위의 X(k)의 그래프가 나오게 된다.

FFT 정의 고속 푸리에 변환(高速 푸리에 變換, Fast Fourier transform, FFT)은 이산 푸리에 변환(Discrete Fourier transform, DFT)과 그 역변환을 빠르게 수행하는 효율적인 알고리즘이다. FFT는 디지털 신호 처리에서 편미분 방정식의 근을 구하는 알고리즘에 이르기까지 많은 분야에서 사용한다. x0,...,xn − 1이 복소수라고 가정할 때, DFT는 다음과 같이 정의한다.

FFT (2) 설명 예) N이 8인 경우에 주기성 N이 8이면 n은 0~7까지 8개이며, k는 0~7까지라고 하였다.

FFT 예) N이 8인 경우에 주기성 n과 k의 값을 조건으로 하면 이를 통해서 다음과 같은 사실을 알 수 있다. • x[n]을 각각 N/2 샘플인 두 개의 신호로 분리한 후에 전개

FFT (3) 전통적인 분해 방법 N/2 샘플로 나누기 위해서 짝수번째 신호와 홀수번째 신호로 나누었으며 각각의 n값을 2r, 2r+1로 두었다.

FFT (3) 전통적인 분해 방법 이렇게 G[k]와 H[k]의 전개로 나눌 수 있다. 이를 이용해서 만약 N=8이면 2점 푸리에 변환이 이루어질 때까지 나누고 를 이용해서 최종적으로 2점 까지 나눈 G[k], H[k]의 값을 구할 수 있어서 DFT의 수행을 더 빠르게 할 수 있다.

FFT (4) FFT 알고리즘 <1> 쿨리-튜키 알고리즘(Cooley-Tukey algorithm) 가장 일반적으로 사용되는 FFT 알고리즘은 쿨리-튜키 알고리즘(Cooley-Tukey algorithm)이다. 이 알고리즘은 분할 정복 알고리즘을 사용하며, 재귀적으로 n 크기의 DFT를 n = n1 n2가 성립하는 n1, n2 크기의 두 DFT로 나눈 뒤 그 결과를 O(n) 시간에 합치는 것이다. 이 방법은 1965년에 J. W. 쿨리와 J. W. 튜키가 발표하여 널리 알려졌지만, 나중에 카를 프리드리히 가우스가 1805년에 같은 방법을 이미 개발하였으며, 그 뒤에도 제한된 형태의 FFT가 종종 발견되었음이 밝혀졌다. 쿨리-튜키 알고리즘은 보통 크기 n을 재귀적으로 2등분하여 분할 정복을 적용하기 때문에 n = 2k인 경우에 많이 적용된다. 하지만 일반적으로 n1과 n2는 같을 필요가 없으며, 따라서 n이 임의의 합성수일 때에도 적용 가능하다. 쿨리-튜키 알고리즘은 DFT를 더 작은 크기의 DFT로 나누기 때문에, 뒤에 설명된 다른 FFT 알고리즘과 함께 사용될 수 있다.

FFT (4) FFT 알고리즘 <1> 쿨리-튜키 알고리즘(Cooley-Tukey algorithm) 원리에 대한 설명은 다음과 같다. 정의에서 W = e − 2π / N라고 하고 다시 정리하면, 예를 들어 N = 4일 때, 이 식을 행렬을 지수의 짝홀을 기준으로 위의 식을 다음과 같이 변형할 수 있다.

FFT (4) FFT 알고리즘 <1> 쿨리-튜키 알고리즘(Cooley-Tukey algorithm) 이는 다음과 같이 다시 쓸 수 있으므로, N = 4인 DFT는 N = 2인 DFT 두 개를 사용해서 계산할 수 있다. 이 과정을 재귀적으로 적용하면 N = 2k인 DFT를 O(k, N에 의한) 시간 안에 할 수 있다. 이런 분할 과정을 그림으로 그리면 나비 모양의 그림이 나오기 때문에 나비 연산(Butterfly operation)이라고도 불린다.

FFT (4) FFT 알고리즘 <2> Prime Factor Algorithm (PFA) prime-factor algorithm (PFA) 는 Good–Thomas algorithm (1958/1963)으로도 불린다. 이 알고리즘은 DFT에서 표현하였던 크기 N을 N1*N2 즉 DFT에서 차원을 두 개의 차원인 N1 N2로 표현하였는데 이는 오직 N1과 N2가 소인수일 때 쓰이는 알고리즘이다. <3> Bruun's FFT algorithm Bruun's FFT algorithm은 FFT에서 비정상인 재귀 다항식의 분해방식의 접근에 기초한 알고리즘이다. 이 연산이 마지막 단계까지 오직 real 계수만 포함하기 때문에 이것은 초기에는 real data의 DFT에 주로 많이 쓰였다. 그러나 이 알고리즘의 접근을 일반적인 쿨리-튜키 알고리즘을 기본으로 하여서 이 알고리즘은 real data의 사용에 성공적으로 정착하게 되었다.

FFT (4) FFT 알고리즘 <4> Rader's FFT algorithm Rader's FFT algorithm은 주기적 컨볼루션을 이용하는 소인수 크기의 DFT에서 사용되는 알고리즘이다. <5> Bluestein's FFT algorithm Bluestein's FFT algorithm은 보통 chirp z-transform algorithm 이라 불린다. 이 알고리즘은 컨볼루션으로 표현되는 DFT가 임의의 크기를 가질 때 사용되는 알고리즘이다.

각 이론들의 관계 CTFT와 DTFT와의 관계 CTFT (Continuous Time Fourier Transform) : 연속시간 푸리에 변환

각 이론들의 관계 CTFT와 DTFT와의 관계

각 이론들의 관계 (2) DFT와 Fourier Series와의 관계 주기 신호의 경우 다음과 같이 표현 가능

각 이론들의 관계 (3) DFT와 Fourier Transform와의 관계

FFT Code (1) example3 분석

FFT Code (1) example3 분석

FFT Code (1) example3 분석

FFT Code (2) example4 분석

FFT Code (2) example4 분석

FFT Code (2) example4 분석

FFT Code (2) example4 분석

FFT Code (3) Matlab 속의 FFT Matlab에서 FFT가 어떤 역할을 하는지 help fft를 실행해보았다.

FFT Code (3) Matlab 속의 FFT 답변을 보면 fft의 결과인 X(k)를 구하는 식으로 라고 나와 있는 것을 볼 수 있다. 이는 기존에 구했던 의 식 과는 다른 모습 을 보이는데 matlab의 식을 분석한 결과 exp함수에서 n과 k의 개수가 각각 (n-1), (k-1)을 취하고 있으므로 결국에는 표본의 개수가 기존의 식과 같이 N개가 되는 FFT를 표현한다는 것을 알 수 있었다.

FFT Code (3) Matlab 속의 FFT 그리고 code중에서 fft_mod라는 것이 있어서 이것도 help를 이용해서 알아보았다. 그 결과 이와 같은 설명을 얻을 수 있었다. 위의 설명을 통해서 zero padded된 x를 구할 때 위와 같은 명령어를 쓴다는 것을 알 수 있었다. 여기서 zero padded된 x란 x의 값 뒤에 0을 넣는 다는 뜻으로 이 값을 FFT하게 되면 zero padded이전의 신호보다 좀더 oversample된 신호를 얻을 수 있다. 이런 방법을 사용하는 이유는 fft를 실행하면서 신호의 주기를 정확히 맞추지 못할 때가 사용하기 위해서이다.

<참고 자료> 귀족고양이님 네이버블로그(그림) -Nyquist이론 <http://blog.naver.com/njiomk?Redirect=Log&logNo=90043797507> Fourier Series 그래프 참고 <http://www.engineers-excel.com/Gallery.htm> DFT의 특성 참고 http://www.hanium.or.kr/download.do?file=%B5%F0%C1%F6%C5%D0%BD%C5%C8%A3%C3%B3%B8%AE%B1%B3%BE%C8.ppt&dirname=attachfile.notice DTFT, DFT 문제 참고 <http://210.91.1.91/classnote/Dsp/DTFT/DTFT.htm> FFT 이론 참고 <http://w3.kunsan.ac.kr/~wgkim/dsp_tp/DSP07.pdf> FFT 알고리즘 참고 <http://ko.wikipedia.org/> Matlab의 FFT 참고 <http://blog.daum.net/hany3/4788179> <http://iamaman.tistory.com/11>