2015-01-09 2 views
3

http://www.tech.dmu.ac.uk/~eg/tensiometer/fft/fft.cFFT 알고리즘을 C 코드 Explaination

http://www.tech.dmu.ac.uk/~eg/tensiometer/fft/fft_test.c

나는 위의 링크에서 주파수 도메인 및 그 반대로 시간 영역을 변환 FFT 알고리즘에 대한 좋은 작업 C 코드를 발견했다. 그러나이 코드가 어떻게 작동하는지에 대한 순서도 또는 단계별 프로세스를 알고 싶었습니다. 나는 FFT를위한 시간의 데시 메이션 (decimation)의 버터 플라이 방법을 사용하여 코드를 분석하려고 노력하고 있지만 코드를 이해하는 데 어려움을 겪고 있습니다. 코드가 잘 작동하고 올바른 결과를 제공하지만 누군가이 코드의 작동 방식에 대한 간략한 설명을 할 수 있다면 큰 도움이 될 것입니다.

fft.c 코드에 사용 된 포인터와 배열과 혼동 스럽습니다. 또한 내가 변수 오프셋이 코드에서델타 인 것을 얻지 못하고 있습니다. 실수 및 허수 항의 직사각형 행렬을 코드에서 어떻게 고려/사용합니까 ?? 나를 안내 해줘.

감사합니다, Psbk

+0

는 아마도이 질문은 더 나은 http://programmers.stackexchange.com/tags/algorithms – Evert

+2

에서 요구되는 데이터와 임시 버퍼 (물리적 또는 의미를) 교환 너무 20 세기에, 브리검 (E. Brigham)이 저서 한 '고속 푸리에 변환 (Fast Fourier Transform)'과 그 응용 프로그램의 사본을 찾으십시오. 나는 아직 더 나은 설명을 찾지 못했고 그것을 읽은 후에 모두 명확해질 것이다. 구입하기에 약간 비싸므로 지역 도서관이 더 좋은 곳입니다. – andand

+1

@andand : 나는 두 번째 추천서이다. 훌륭한 책이다. 이론보다는 FFT의 실용적인 응용 프로그램을 보면서 많은 시간을 소비한다는 점에서 진귀한 책이다. –

답변

0
난 강력하게 숙지하는 것이 좋습니다

: https://stackoverflow.com/a/26355569/2521214 처음부터 지금

보는 오프셋 및 델타에 사용됩니다

  • 는 나비 셔플 순열을
  • 당신은 1 단계에서 시작하여 간격의 절반 인
  • 으로 시작하고 재귀를 통해 t 입출력은 log2 (N) 단계 1 개 아이템의 간격 ...
  • +/- 한 재귀 레벨
  • 는 평소 역순 나비 할

에서 XX ​​어레이

  • 은 버퍼는
  • 그래서 대신 임시 버퍼로 /로부터
  • 01,235,164 계산 (모든 경우) FFT 인플레 이스 쉽게 수행 할 수
  • subresult 또는 입력 데이터를 저장하는 데
  • 각 재귀에는 소리의 위험에서
+0

내 질문에 대한 자세한 설명을 주셔서 감사합니다. 그것은 나에게 매우 유용하다. 나는 당신이 제공 한 정보로 코드를 다시 살펴보고 어딘가에 붙어 있다면 다른 정보를 요청할 것입니다. 나는 당신이 언급 한 링크를 통해 가고 그것이 매우 좋다고 느낍니다. 다시 한번 고마워. – Psbk