티스토리 뷰



랩뷰를 이용한 고속 푸리에 변환에 대해서(FFT, Fast Fourier Transform)


고속 푸리에 변환은 이산 푸리에 변환(Discrete Fourier Transform)을 계산할 때 연산에 대한 횟수를 줄이기 위해서 고안된 알고리즘으로, 이 알고리즘은 반복되는 계산되는 과정을 제거함으로써 빠른 연산이 가능합니다. 이 알고리즘은 1960년대 콜리와 튜키에 의해 일반적으로 알려지게 되었는데, 1940년 전쯤부터 몇몇 사람들에 의해 독립적으로 사용되어져 왔습니다.


이 알고리즘은 분할 정복 알고리즘을 사용하여 재귀적으로 n크기의 DFT(Discrete Fourier Transform)을 n = n1 n2가 성립하는 n1, n2 크기의 두 DFT로 나눈 뒤 그 결과를 O(n) 시간에 합치는 방법을 사용하였습니다. FFT에 대한 알고리즘이 여러가지가 존재하는데, 콜리-튜키 알고리즘이 아닌 알고리즘으로는 Prime Factor Algorithm (PFA), Bruun's FFT algorithm, Rader's FFT algorithm, Bluestein's FFT algorithm등이 존재합니다. 


일반적으로 FFT는 시간 도메인(Time Domain)의 정보를 주파수 도메인(Frequency Domain)으로 변환해주는 공식입니다. 시간 도메인으로 수집되는 특정 시그널이 어떤 주파수로 파형을 이루고 있는지를 볼 수 있게 해주는 방법이라고 보시면 됩니다.


시간축으로 표현할 수 있는 신호(혹은 데이터)는 수많은 사인파와 코사인파로 구성이 되어 있습니다. FFT는 이러한 각 파형들의 주파수가 어떻게 되는지를 나타낼 수 있습니다.


FFT 연산은 랩뷰를 통해서 처리를 할 수 있습니다. 랩뷰에는 다양한 FFT 함수와 Power Spectrum 함수를 제공을 하고 있습니다. 


아래는 랩뷰를 통해서 간단히 Sine 파형을 FFT한 결과를 나타냅니다. FFT와 Power Spectrum 관련 함수 3개를 사용하여 FFT 결과와 Power Specturm 결과를 나타내고 있습니다. 또한 FFT 결과를 Inverse 하여 원신호로 변환하는 코드까지 구현을 하였습니다. 


제공해주는 vi 들 가장 간단한 FFT VI와 Power Spectrum VI를 살펴보겠습니다. FFT VI는 간단히 Input Sequence X를 받아서 FFT한 결과를 보여줍니다. 



Power Spectrum VI는 아래와 같습니다.



위의 함수들을 이용하여 간략히 FFT를 구현해보았습니다. 



사인파형을 생성하여 FFT, Inverse FFT, Power Spectrum을 구하였습니다. 또한 FFT와 Power Spectrum의 Peek 값을 찾아서 원 신호의 진폭이 어떻게 되는지를 파악해보았습니다. 



추가적으로 서로다른 파형을 합쳐서 FFT와 Power Spectrum을 구해보았습니다. 코드와 결과는 아래와 같습니다. 기존의 Frequency와 이 값을 3배한 두개의 파형을 더하고 이에 대한 FFT를 구한 결과입니다. 




이 글에서는 랩뷰를 통해서 FFT, Power Spectrum을 구하는 방법을 알아보았습니다. 


이 글이 도움이 되셨나요?

그렇다면 아래의 그림을 클릭해주세요.



댓글