매트랩으로 구현한 FFT
- 최초 등록일
- 2009.05.16
- 최종 저작일
- 2009.05
- 3페이지/ 한컴오피스
- 가격 3,000원
소개글
Discrete fourier transform 의 한 방법인 fast fourier transform 을 Matlab을 써서 함수로 직접 구현하였다. 이후 매트랩 내장함수인 fft 명령어와 비교를 통해 맞게 코딩하였음을 확인 하였다. 또한 함수내에 computation complexity 를 구하는 식을 적어서 기존의 n^2 의 계산량보다 훨씬 적은 nlog2n 번의 계산이 필요함 역시 확인하였다.
목차
1. 코드 설명
2. 코드 첨부
본문내용
my_fft 란 이름으로 FFT 함수를 직접 구현하였다. test_my_fft.m을 실행하면 my_fft 와 매트랩 내장 fft 의 결과를 비교해서 보여준다. 나는 세 개의 64-point sequence를 만들어서 test를 하였는데 세 경우에 모두 같은 결과를 보임을 확인하였다. 아래에 결과와 함께 매트랩 코드를 첨부한다.
* 64-point 뿐만 아니라 2^N 길이의 어떤 sequence 에 대해서도 성립한다. 2의 배수가 아닌 길이의 sequence 에 대해 하고싶으면 zero-padding을 해서 역시 2^N 길이로 맞춰주면 된다.
왼쪽은 my_fft를 쓴 결과, 오른쪽은 fft 내장함수를 쓴 결과이다. 그리고 세 개의 signal 의 FFT 에 대해 각각 count를 계산하였는데 모두 384가 나왔다. 이는 Nlog2N 에 64를 넣었을 때 나오는 값이다. 이 값들은 test_my_fft.m을 실행하면 커맨드 창에 결과가 출력된다.
<코드첨부>
1) test_my_fft.m
clear all clc;
% test 를 위해 세 개의 64-point sequence 를 만든다.
x1 = ones(64,1);
x2 = x1;
x2(1:2:end) = -1;
x3 = x2;
x3(2:4:end) = 0.5;
% test.
[y1, count1] = my_fft(x1);
yy1 = fft(x1);
참고 자료
없음