CS/영상처리

[푸리에 변환 이해하기 - 9] Discrete Fourier Transform (DFT) [컴공과고씨]

시간빌게이츠 2022. 5. 30. 01:16
반응형

자 이제 푸리에 변환의 마지막 파트 입니다. 

앞에 CTFT DTFT를 잘 따라오셨다면 이 부분도 쉽게 이해할 수 있습니다.

들어가기 앞서서 전체적으로 정리를 한번 하고 가겠습니다.

자 보시면 연속된 신호에서 주파수 도메인으로 -> CTFT

연속된 신호에서 sampling을 해주고 DTFT를 해주면 주파수는 CTFT의 값에서 주기반복을 시켜주는 것.

문제는 우리는 컴퓨터에서 어떤 작업을 하기 위해서는 연속해서는 안됩니다.

그래서 DTFT의 결과 값을 sampling을 해주어야합니다. 그러면 time-domain에서는 주기 반복이 일어나고 우리는 반복된 주기가 필요한게 아니라 한 주기만 있으면 되기 때문에 주기반복되는 time - domain 신호에서 한 주기만 뽑아낸 주파수 도메인에서의 값이 필요하게 됩니다. 이것이 바로 N-Point DFT입니다. 

 

옆에 N-point DFT에 대해 식을 써놨는데 더 자세히 알아 보도록 하겠습니다.

N-point DFT는 기본 개념이 뭐냐면 위에서도 보았듯이 DTFT의 결과에서  sampling한 값 즉, 모든 w^에 대한 것이 아니라 우리가 base frequency를 (2π/N)로 잡고 k배가 되도록 하겠다 라는 것입니다. 왜 2π/N으로 잡았냐

그림에서 볼 수 있듯이 w^은 -π ~ π 의 값이 반복이 될 것이다. 이 구간을 N-Point로 sampling을 해주는 것입니다. 그럼 그 하나의 간격이 2π/N이 될 것입니다. 그래서 w^가 모든 것에 대해 값을 가지는 것이 아니라 2π/N의 배수마다 값을 가질 거기 때문에  k를 곱해줍니다. 이 때 k는 -2/N 부터 2/N까지 혹은 어차피 주기 반복이기 때문에 0부터 N-1까지 해서 총 길이를 N으로 맞추어 주면 됩니다.

직접 4-Point DFT 해보기

IDFT도 똑같이 해주면 됩니다.

 

 

DFT 주기성

자 우리가 DFT를 하면 사실 저렇게 주기가 반복되는 신호가 나오게 됩니다. 여기서 우리는 한 주기만 뽑아 쓰는 것이죠.

그럼 이렇게 되면 무슨 문제있을까요? 

 

바로 (circular)time-delay입니다.

DTFT와 다른 점이 있죠 바로 circular 입니다.

 

원래는 5초 time delay를 한다면 그냥 옆으로 5초만 딜레이가 되었죠?

그런데 DFT를 적용할 때는 오리지널 신호가 비주기 신호여도 주기 반복 된 신호라고 생각해주어야 합니다. 왜냐하면 주파수 도메인에서 샘플링이 일어났기 때문에 타임 도메인에서는 주기 반복이 일어나기 때문에 실제 있는 신호는 주기 반복 신호라는 것입니다. 그래서 만약 10-point DFT를 했다고 하면 10만큼 간격으로 주기 반복되는 신호가 있다고 생각해주어야합니다.

이런식으로 실제로 딜레이를 하고 나서 우리가 원하는 0부터 10까지 뽑아준다면 0부터 5까지 0이 아닌 뒤에 있던 신호가 앞으로 온 신호가 나오게 됩니다.  

자 그렇다면 이게 무슨 의미가 있을까?

바로 convolution 연산에 큰 영향을 미칩니다.

 

자 우리가 연속된 신호에서 impulse response에 대해서 convolution 연산을 취한 값은 CTFT를 해 주파수 도메인에서 곱과 같다는 것을 앞에서 보았습니다. 그렇다면 DFT는 어떨까요?

주기 반복되는 신호를 convolution 한 결과 값과 같게 되는 것입니다. 

그래서

위와 같이 convolution 연산을 할 때에 point를 넉넉히 잡지 않으면 circular 된 값이 계산 되어 이상한 신호가 나오기 때문에 L+M-1 이상으로 point를 잡아 주어야 함에 유의해야 한다.

반응형