View
1
Download
0
Category
Preview:
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
kn
N
N
n
Wnx
NknjnxkX 이산 푸리에 변환
이산 푸리에 역변환
1
0
][1
][N
k
kn
NWkXN
nx 10 Nn
이산 푸리에 변환은 비주기적인 신호 x[n]을 주기 신호로 고려
이산 푸리에 급수와 이산 푸리에 변환의 차이
비주기 신호와
푸리에 변환 스펙트럼
주기 신호와
이산 푸리에 급수
한 주기
이산 푸리에 변환 / 푸리에 변환 / 이산 푸리에 급수
• 선형성
• 시간이동
• 컨벌루션
• 변조
][][][][
][][][][
2121
2211
kBXkAXnBxnAx
kXnxkXnx
이면
및만일
0][/2exp][][
][][
00
kn
nWkXNknjkXnnx
kXnx
이면
만일
][][][][
][][][][
21
1
0
21
2211
kXkXnmxnx
kXnxkXnx
N
m
이면
및만일
1
0
2121
2211
][][1
][][
][][][][
N
m
mkXmXN
nxnx
kXnxkXnx
이면
및만일
1
0
1
0
/2sin/2cos][
/2exp,][][
N
n
N
n
N
kn
N
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
][
][arctan
kX
kXk
1
0
/2cos][][N
n
NknjnxkX
1
0
/2sin][][N
n
NknjnxkX
각각 2N2 만큼의
실수 곱셈 계산 필요
이산 푸리에 변환 계산
x[n]이 복소수인 경우 (계산이 더욱 복잡해 짐)
• 실수부 :
• 허수부 :
1
0
00 sincos][][][N
n
knjknnjinrkX
)sin(][)cos(][][ 0
1
0
0
knniknnrkXN
n
)sin(][)cos(][][ 00
1
0
knnrknnikXN
n
곱셈이 존재하기 때문 계산 속도 느림 (계산시간 : N2 에 비례)
(예) 2048개 또는 4096개 샘플 경우 : 수 분
각각 4N2 만큼의 실수 곱셈 계산 필요
• 해결점
: 이산 푸리에 변환과 역이산 푸리에 변환의 주기성으로 인한
=> k와 n이 변함에 따라 같은 값의 곱셈이 반복 계산
• 대책
1. 고속 푸리에 변환 알고리즘
2. 코사인과 사인값을 메모리에 저장하였다 이용
이산 푸리에 변환 계산
1
0
1
0
][/2exp][][N
n
kn
N
N
n
WnxNknjnxkX
WN = exp(-j2/N)
WNkn : 주기함수, 같은 계산 값이 반복
10 Nk
N = 8인 경우 WNkn의 주기성
- k와 n이 각각 0에서 7 사이
- 총 64개
- 8개의 WNkn
- 4개의 고정 값
2
1,
2
1,,1
jjj
8
12 knj
e
4
j
e
2
5j
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
rk
N
k
N
N
r
rk
N
N
r
kr
N
rk
N
N
r
N
n
kn
N
WNjW
WrxWWrx
WW
NkWnxkX
kHWkG
WrxWWrxkX
k
N
N
r
rk
N
k
N
N
r
rk
N
12/
0
2/
12/
0
2/ ]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
2nk
N
nkj
nk
N eW2
Nj
N eW2
Nj
N eW2
2
2
전통적인 분해 방법
- DFT의 길이를 N = N1N2 와 같이 두 수의 곱으로 표현
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
kn
N WnxWnxkX
N = 4 일 때의 푸리에 변환식
인덱스 접근 방법
1
0
)2(
421
1
0 1
21
2
],[][n
nnk
n
WnnxkX
1
0
2
4
1
0
4
1
0
4
2
4
1
0 1
1
2
2
1
21
2 n
kn
n
kn
n
knkn
n
WxWWWxX
1
0
2
4
1
0
4
1
1
2
2
n
kn
n
knWxWX
1
0
2
44
1
0
2
4
1
1
1
11n
knk
n
knWxWWxX
두개의 N/2점 이산 푸리에 변환
3
04
1
0
][][][n
knN
n
kn
N WnxWnxkX
N = 4 일 때의 푸리에 변환
kkkWxxWWxxX
2
44
2
4 ]3[]1[]2[]0[
2
4
3
4
2
4
0
4
2
4
0
4
2
4
1
4
2
4
0
4
0
4
0
4
]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점 변환방정식
kkkWWW 44
0
4 1
02 n 12 n
01 n 01 n11 n 11 n
인덱스 접근 방법
0
4W
2
4W
1
4W
3
4W
신호 흐름도 (signal flow graph)
jWWW
jWW
jjW
2
4
1
4
3
4
221
4
2
4
1
4
1
4/2exp
W40 = 1 = W2
0 ; W42 = W2
1 = -1 ; W43 = W4
2 W41 = W2
1 W41
1
0
2
4
1
0
4
1
1
2
2
n
kn
n
knWxWX
1
0
2
1
0
24
1
0
4
4
2
4
1
0
2
44
1
0
)2(2
4
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
10
4
4
412 WW
nk1
2
2
4 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
4
8
1
0
2
8
1
0
8
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
0
4
2
4
1
0
4
1
0
4
1
0
2
4
1
0
1
0
)2(
421
3
0
4
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
kkkWxxWWxxX 4
2
44 ]3[]2[]1[]0[
주파수 분할 (DIF, decimation in frequency) FFT
Fmmm
mmm
TqXpXqX
qXpXpX
)()()(
)()()(
1
1
주파수 분할 고속 푸리에 변환에서 8점, 기수 2, 조건을 갖는 인덱스 대응식은
n = n1 + 2n2 + 4n3 및 k = 4k1 + 2k2 + k3
- FFT에 대한 신호 흐름도를 그리고 W8의 승수로 모든 가지의 가중치를 나타내시오
- 기본적인 2점 FFT의 나비선도와 회전 요소를 이용해서 또 다른 형태의
신호 흐름도를 그리시오 (데이터의 순서 바뀜은 출력에만 존재한다고 가정)
풀이
1
0
8
1
0
2
8
1
0
4
8
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 = W8
4 W83 = (-1) W8
3
예제 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 특성
Chapter 8
FFT Processing
시간 영역 신호에서는 명확하지 않은 중요한 정보를 주파수 영역에서 제공
신호의 특성을 파악하고 결정하는데 중요한 정보를 제공
원하지 않는 간섭 요인이나 잡음으로부터 원하는 신호를 파악
임펄스 또는 계단 함수 등의 입력에 의해 변화되는 시스템의 반응을 측정하며, 그 때의 시스템의
주파수 특성에 대한 정보 제공
스펙트럼 계수 :
연속 스펙트럼 함수에 내재되어 있는(동일한 신호의 주기적 특성을 나타내는) 고조파들에 대한 샘플
신호 x[n]
FFT 스펙트럼 크기 |X[k]|
역변환을 통해 복원된 신호
스펙트럼 분석
(a) 세 개의 정확한 푸리에 고조파를 포함하는 신호
(b) 고조파와 비고조파 성분을 모두 포함하는 신호의 푸리에 변환
5121),211512
2cos(15.0
)53512
2sin(2.0)16
512
2sin(1.0][
nn
nnnx
5121),25.211512
2cos(15.0
)5.53512
2sin(2.0)16
512
2sin(1.0][
nn
nnnx
스펙트럼 계수 및 스펙트럼 누설
- 주엽의 폭은 4/N 라디안, 부엽의 폭은 2/N 라디안
- 크기는 중심 주파수 Ωc로부터 서서히 감소
- Sinc 함수의 영점 교차는 다른 필터들의 중심 주파수와 일치
기본 대역 필터 조합으로 고려되는 8점 고속 푸리에 변환
스펙트럼 누설의 영향
5121),25.211512
2cos(15.0)5.53
512
2sin(2.0)16
512
2sin(1.0][ n
nnnnx
(a) 이웃한 필터에서 나타나는 응답들이 A, B, C, D 점들과 대칭 되는 지점인
sinc 함수 영점교차점의 중간에 위치
(b) 점들이 영점 교차 사이의 4분의 1 거리에 위치하고 중심선에 대해 대칭이 아님
예제 8.1
512점의 데이터가 잡음 속에 주기적인 정방형파를 포함
백색 잡음 + 32번째와 96번째 고조파 성분 + 잡음 스펙트럼에 의해 가려진 작은 성분
잡음에서 신호를 검출하기 위한 고속 푸리에 변환의 사용
잡음 하에서의 신호의 감지
삼각창
해밍창
N
Nnn
|12|1][
)}12{
cos460540][N
Nn(..n
스펙트럼 누설에 의해 신호의 해석에 어려움을 초래
스펙트럼 변환 전에 원신호를 점감함으로써 불연속 점을 줄임
주엽폭과 부엽의 크기를 조절
적절한 창의 선택은 신호나 데이터의 특성과
추출코자하는 정보의 유형에 의존
1281),53128
2sin()51
128
2sin()5.24
128
2sin()9
128
2sin(][ n
nnnnnx
고속 푸리에 변환에서의 창의 사용
(a) 직사각형, (b) 삼각, (c)와(d) hamming
창문화
시스템 특성을 검색하기 위한 고속 푸리에 변환의 사용
][][][,][
][][ kHkXkYor
kX
kYkH
][][][ nhnxny *
LTI 시스템과 고속 푸리에 변환
영 값의 추가가 스펙트럼 해상도에 미치는 영향
영 값의 추가
그림 4.11 2차 시스템
- 그림(a), (c), (d)는 많은 영 값의 추가로 인해 주파수 응답은 과샘플
- 그림(b)는 h[n]이 320점 형태에 맞지 않으므로 왜곡과 스펙트럼 누설 존재
- 기수-2 고속 푸리에 변환을 위해서는 영 값 추가가 필요
- 적절한 변환 길이는 (a)128, (b)512, (c)32, 그리고 (d)128점
그림 5.5 저역 이동평균 필터
- 320개의 값들이 계산되었고 과샘플
- 5점 이동 평균 임펄스 응답은 5점 DFT 또는 8점 기수-2 FFT를 이용하여 변환
- 21점 이동 평균 임펄스 응답은 21점 DFT 또는 32점 기수-2 FFT를 이용하여 변환
그림 6.19 주파수 샘플 대역 필터
- 320개의 값들을 계산했기 때문에 과도 샘플링 되었음
- h[n]의 가로축은 160개의 샘플 값들을 가지고 있음
- 120개의 영이 아닌 샘플 값들을 가지고 있는 유한 임펄스 응답 필터이므로 120점 DFT
혹은 128점 FFT를 적용하는 것이 적합
예제 8.2
고속 컨벌루션
고속 컨벌루션에 의한 디지털 필터링
순환(주기) 컨벌루션 선형(비주기) 컨벌루션
1
0
)1(0],[][][][][N
i
Nninhixnhnxny *
선형 고속 컨벌루션의 설명 (각 횡좌표: 128 샘플)
고속 컨벌루션
elsewhere,0
1)1(],[ 11
NiniNnxxi
1
0
2
][][][][][N
k
ii knxkhnhnxny*
1
0
2
][][][][][N
k
ii inxihnhnxny *
중복 더함 방법을 이용한 고속 컨벌루션
신호분할
중복 저장 방법을 이용한 고속 컨벌루션
Recommended