Upload
others
View
18
Download
0
Embed Size (px)
Citation preview
Chapter 7
Discrete and Fast Fourier Transform
1. 이산
푸리에
변환의
기초
이론
2. 푸리에의
여러
형태와의
관계
3. 이산
푸리에
변환의
구현시
계산상
문제
4. 다양한
고속
푸리에
변환
알고리즘
이산
푸리에
변환
(DFT)
고속
푸리에
변환
(FFT)
디지털
신호를주파수
영역에서
분석
Introduction
이산
푸리에
급수 이산
푸리에
변환
1. 주기
신호에
응용
2. 스펙트럼
선의
고조파
형태
3. 스펙트럼
계수
ak
1. 비주기
신호에
응용
2. 선형
시불변
시스템에
적용3. Ω에
대한
연속함수
10)/2(exp −≤≤−= NkNjWN π
( )
∑
∑−
=
−
=
=
−=
1
0
1
0
][
/2exp][][
N
n
knN
N
n
Wnx
NknjnxkX π이산
푸리에
변환
이산
푸리에
역변환 ∑−
=
−=1
0][1][
N
k
knNWkX
Nnx 10 −≤≤ Nn
이산
푸리에
변환은
비주기적인
신호
x[n]을
주기
신호로
고려
이산
푸리에
급수와
이산
푸리에
변환의
차이
비주기
신호와
푸리에
변환
스펙트럼
주기
신호와
이산
푸리에
급수
한 주기
이산
푸리에
변환
/ 푸리에
변환
/ 이산
푸리에
급수
•
선형성
•
시간이동
•
컨벌루션
•
변조
][][][][][][][][
2121
2211
kBXkAXnBxnAxkXnxkXnx
+↔+↔↔
이면
및만일
( ) 0][/2exp][][
][][
00kn
nWkXNknjkXnnx
kXnx
=−↔−
↔
π이면
만일
][][][][
][][][][
21
1
021
2211
kXkXnmxnx
kXnxkXnxN
m↔−
↔↔
∑−
=
이면
및만일
∑−
=
−↔
↔↔1
02121
2211
][][1][][
][][][][N
mmkXmX
Nnxnx
kXnxkXnx
이면
및만일
( )
( ) ( ){ }∑
∑−
=
−
=
−=
−==
1
0
1
0
/2sin/2cos][
/2exp,][][
N
n
N
nN
knN
NknjNknnx
NjWWnxkX
ππ
π여기서
이산
푸리에
변환의
특성
x[n]이
실수이면
X[k]의
실수부: 우함수
X[k]의
허수부: 기함수
대칭성
: 절반의
계수로
표현
x[n]이
복소수이면, 대칭성이
존재하지
않음
-
이산
푸리에
변환
정의
시
모든
계수
필요
x[n]이
실수이고
우함수이면
(x[n]=x[-n])
=> 스펙트럼은
허수부가
모두
0인
cosine 항만
존재
x[n]이
실수이고
기함수이면
=> 스펙트럼은
실수부가
모두
0인
sine 항만
존재
x[n] X[k] ℜ ℑ ℜ ℑ 우수 0 우수 0 기수 0 0 기수 0 우수 0 우수 0 기수 기수 0
이산
푸리에
변환의
특성
•
계산
속도
: 알고리즘과
프로그램을
작성할
때뿐만
아니라
하드웨어에
의해서도
정해짐
•
곱셈
: 많은
계산시간
소모, 특별한
목적의
디지털
신호처리
하드웨어
설계
필요
이산
푸리에
변환
이산
푸리에
역변환
( )
( ) ( ){ }∑
∑−
=
−
=
−=
−=
1
0
1
0
/2sin/2cos][
/2exp][][
N
n
N
n
NknjNknnx
NknjnxkX
ππ
π
( )
( ){ }∑
∑−
=
−
=
+=
=
1
0
1
0
/2sin)/2cos(][1
/2exp][1][
N
k
N
k
NknjjNknjkXN
NknjkXN
nx
ππ
π
x[n]이
실수인
경우
• 진폭과
위상
• 실수부
:
• 허수부
:
( ) ( ){ } 2/122 ][][][ kXkXkX ℑ+ℜ=( )( )][
][arctankXkX
k ℜℑ
=φ
( ) ( )∑−
=
=ℜ1
0/2cos][][
N
nNknjnxkX π
( ) ( )∑−
=
−=ℑ1
0
/2sin][][N
n
NknjnxkX π
각각
2N2 만큼의
실수
곱셈
계산
필요
이산
푸리에
변환
계산
x[n]이
복소수인
경우
(계산이
더욱
복잡해
짐)
•
실수부
:
•
허수부
:
( ) ( ) ( ){ }∑−
=
Ω−Ω+=1
000 sincos][][][
N
nknjknnjinrkX
( ) )sin(][)cos(][][ 0
1
00 Ω+Ω=ℜ ∑
−
=
knniknnrkXN
n
( ) )sin(][)cos(][][ 00
1
0Ω−Ω=ℑ ∑
−
=
knnrknnikXN
n
곱셈이
존재하기
때문
계산
속도
느림
(계산시간
: N2 에
비례)
(예)
2048개
또는
4096개
샘플
경우
: 수
분
각각
4N2 만큼의실수
곱셈
계산
필요
• 해결점
: 이산
푸리에
변환과
역이산
푸리에
변환의
주기성으로
인한
=> k와
n이
변함에
따라
같은
값의
곱셈이
반복
계산
• 대책
1. 고속
푸리에
변환
알고리즘
2. 코사인과
사인값을
메모리에
저장하였다
이용
이산
푸리에
변환
계산
( ) ∑=∑ −=−
=
−
=
1
0
1
0][/2exp][][
N
n
knN
N
nWnxNknjnxkX π
WN = exp(-j2π/N)
WNkn
: 주기함수, 같은
계산
값이
반복
10 −≤≤ Nk
N = 8인
경우
WNkn의
주기성
-
k와 n이 각각 0에서 7 사이
- 총 64개
-
8개의
WNkn
-
4개의
고정
값
21,
21,,1 jjj −
±+
±±±
812 knj
eπ−
4πj
e−
25πj
e−
고속
푸리에
변환
(FFT)
1. 전통적인
분해
방법
-
데이터
N이
2의
승수
( )인
경우
적용
-
시분할형
(decimation-in-time)
-
x[n]을
각각
N/2 샘플인
두개의
신호로
분리
2. 인덱스
접근
방법
-
데이터
N의
개수가
임의의
수에
적용
n2
고속
푸리에
변환
접근방법
2/2
12/
0
212/
0
2
12/
0
)12(212/
0
1
0
)/22exp( 그리고
)](12[)](2[
)신호 기수번째()신호 우수번째(
)1(0,][][
NN
N
r
rkN
kN
N
r
rkN
N
r
krN
rkN
N
r
N
n
knN
WNjW
WrxWWrx
WW
NkWnxkX
=−=
++=
+=
−≤≤=
∑∑
∑∑
∑
−
=
−
=
−
=
+−
=
−
=
π
[ ] [ ]kHWkG
WrxWWrxkX
kN
N
r
rkN
kN
N
r
rkN
+=
++= ∑∑−
=
−
=
12/
02/
12/
02/ ]12[]2[][
N = 8인
경우
n = { 0, 1, 2, 3, 4, 5, 6, 7 }
n = { 0, 2, 4, 6 } n = { 1, 3, 5, 7 }
n = { 0, 4 } n = { 2, 6 } n = { 1, 5
} n = { 3, 7 }
-
2점
푸리에
변환이
될
때까지
계속
분할
기수
2 (radix-2)
시분할형
FFT 알고리즘
rn 2=12 += rn
2=nk
Nnkjnk
N eWπ2
−=
Nj
N eWπ2
−=
Nj
N eWπ22
2
⋅−=
전통적인
분해
방법
-
DFT의
길이를
N = N1
N2
와
같이
두
수의
곱으로
표현
n = ( M1 n1
+ M2 n2
) N where n1
= 0, 1, 2 …
(N1 - 1)
n2
= 0, 1, 2 …
(N2 -
1)
M1
, M2 : 상수
N : modulo
k = ( J1 k1
+ J2 k2
) N
DFT의
시간축
인덱스
10 −≤≤ Nn
n1
과 n2
의
값이
특정
범위에서
변하면
n값은
범위에서
변한다
DFT의
주파수축
인덱스
예
: 4점
푸리에
변환을
2점
푸리에
변환으로
분할
N1
= N2
= 2 이면
N = N1
N2
= 4
M1
= 2, M2
= 1, J1
= 1, J2
= 2 이면
n = 2n1
+ n2
n1
, n2
= 0 또는
1
k = k1
+ 2k2
k1
, k2
= 0 또는
1
∑=∑==
−
=
3
04
1
0][][][
n
knN
n
knN WnxWnxkX
N = 4 일
때의
푸리에
변환식
인덱스
접근
방법
∑∑=
+
=
=1
0
)2(421
1
0 1
21
2
],[][n
nnk
n
WnnxkX
∑∑∑∑====
==1
0
24
1
04
1
04
24
1
0 1
1
2
2
1
21
2 n
kn
n
kn
n
knkn
n
WxWWWxX
∑∑==
=∴1
0
24
1
04
1
1
2
2
n
kn
n
kn WxWX
∑∑==
+=1
0
244
1
0
24
1
1
1
11n
knk
n
kn WxWWxX
두개의
N/2점
이산
푸리에
변환
∑=∑==
−
=
3
04
1
0][][][
n
knN
n
knN WnxWnxkX
N = 4 일
때의
푸리에
변환
{ } { }kkk WxxWWxxX 244
24 ]3[]1[]2[]0[ +++=
{ } { }{ } { }{ } { }{ } { }2
43
42
4
04
24
04
24
14
24
04
04
04
]3[]1[]2[]0[]3[
]3[]1[]2[]0[]2[
]3[]1[]2[]0[]1[
]3[]1[]2[]0[]0[
WxxWWxxX
WxxWWxxX
WxxWWxxX
WxxWWxxX
+++=
+++=
+++=
+++=
4점
변환방정식
kkk WWW 440
4 1 +=+⋅
02 =n 12 =n01 =n 01 =n11 =n 11 =n
인덱스
접근
방법
04W
24W
14W
34W
신호
흐름도
(signal flow graph)
( )( )
jWWW
jWW
jjW
==
−===
−=−=
24
14
34
2214
24
14
1
4/2exp π
W40 = 1 = W2
0 ; W42 = W2
1 = -1 ; W43 = W4
2 W41 = W2
1 W41
∑∑==
=1
0
24
1
04
1
1
2
2
n
kn
n
kn WxWX
∑∑
∑∑
∑∑
==
==
=
+
=
+
=
=
=
1
02
1
024
1
0
44
24
1
0
244
1
0
)2(24
1
0
)2(4
1
11
2
2221
1
1211
2
2221
1
121
2
221
n
nk
n
nknk
n
nknk
n
nknk
n
nkk
n
nkk
xWWW
WxWWW
xWWX
104
44
12 == WW nk12
24 WW =
신호
흐름도
(signal flow graph)
한 개의 덧셈과 한 개의 뺄셈
나비와
회전요소가
결합
고속
푸리에
변환
나비
(FFT butterfly)
8점, 기수
2인
시분할
고속
푸리에
변환은
0과
1인
6개의
독립
변수를
가진
인덱스
표로
정의
n = 4n1
+ 2n2
+ n3
및 k = k1
+ 2k2
+ 4k3 (7.41)
(a) n과
k의
인덱스
표를
만들고, 출력이
원래
순서로
나올
때
순서가
바뀐
입력
순서를
표현
(b) 가중치가
W8
승수로
표현되는
고속
푸리에
변환의
신호
흐름도를
작성
(c) 2점
고속
푸리에
변환
나비와
회전
요소를
고려하여
신호
흐름도를
재구성하고
FFT의
경우
필요한
복소수
곱셈
계산의
수를
계산
풀이
(a)
순서가
바뀐
입력
순서 원래
순서의
출력
예제
7.1
(b)
∑∑∑
∑ ∑ ∑
===
= = =
++
=
=
1
0
48
1
0
28
1
08
1
0
1
0
1
0
)24(8
1
1
2
2
3
3
3 2 1
321
n
kn
n
kn
n
kn
n n n
nnnk
xWWW
xWX
예제
7.1
(c)
-
W84 = -1이므로
W86 = W84 W82 = (-1) W82
-
-1이
기본
나비
안에
결합
- W82는 회전 요소
입력
순서를
바꾸었으나, 만약
출력
순서를
바꾼다면
입력
순서를
바꾸지
않아도
된다
입력
및
출력
순서의
변환
-
시분할과
반대
-
주파수
영역에서
시분할
방법에
대한
이원적(opposite or dual)쌍
-
입력값
대신
출력값이
분할
∑∑
∑∑
∑ ∑
∑
==
==
= =
+
=
+=
=
=
=
1
04
24
1
04
1
04
1
0
24
1
0
1
0
)2(421
3
04
1
1
1
1
1
1
2
2
2 1
21
1
],[
][][
n
knk
n
kn
n
kn
n
kn
n n
nnk
n
kn
xWWxW
xWWX
Wnnx
WnxkX
n = n1 + 2n2 , k = 2k1 + k2 , X = X[n1 , n2 ]
주파수
분할
(DIF, decimation in frequency) FFT
{ } { }kkk WxxWWxxX 42
44 ]3[]2[]1[]0[ +++=
주파수
분할
(DIF, decimation in frequency) FFT
{ } Fmmm
mmm
TqXpXqXqXpXpX
)()()()()()(
1
1
−=+=
+
+
주파수
분할
고속
푸리에
변환에서
8점, 기수
2, 조건을
갖는
인덱스
대응식은
n = n1
+ 2n2
+ 4n3
및 k = 4k1
+ 2k2
+ k3
-
FFT에
대한
신호
흐름도를
그리고
W8
의
승수로
모든
가지의
가중치를
나타내시오
-
기본적인
2점
FFT의
나비선도와
회전
요소를
이용해서
또
다른
형태의
신호
흐름도를
그리시오
(데이터의
순서
바뀜은
출력에만
존재한다고
가정)
풀이
∑∑∑
∑∑∑
===
=
++
==
=
=
1
08
1
0
28
1
0
48
1
0
)421(8
1
0
1
0
1
1
2
2
3
3
1
32
23
n
kn
n
kn
n
kn
n
nnnk
nn
xWWW
xWX
예제
7.2
- W87
= W84
W83
= (-1) W83
예제
7.2
-
16점
고속
푸리에
변환
경우
N = 16, N1
= N2
= 4
•
인덱스
대응식
: n = 4n1
+ n2
및
k = k1
+4k2
•
입력
순서
0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15
DFT 특성