2011-10-09 2 views
1

저는 C++ 및 WinApi 호출을 사용하여 Win32 응용 프로그램을 작성하고 있습니다. 나는 WAVEFORMATEX 데이터의 20ms에 걸쳐 8192- 포인트 FFT를 실행할 필요가있다. 이것을 달성하는 가장 효율적인 방법은 무엇입니까?윈도우의 FFT 기능이란 무엇입니까?

+1

나는 8192- 포인트 FFT를 의미한다고 생각합니다. – Mysticial

+0

당신이 정확하고 편집되었습니다. –

+2

http://msdn.microsoft.com/en-us/library/ee415925(v=vs.85).aspx –

답변

2

, XDSP 기능에 대한 MSDN 문서가 될 수있다 관련성이 있습니다.

기능은 WAVEFORMATEX을 직접 사용하는 것으로 보이지 않지만 적절한 형식으로 변환 할 수 있다면 FFT을 사용하여 원하는대로 할 수 있습니다.

DirectX SDK의 일부이므로 새로운 종속성을 도입한다는 점에 유의하십시오.

3

그것은 오랜 시간이되었습니다,하지만 난 컴파일하기가 매우 빠르고 쉬운 것으로이 코드 라이브러리를 불러올 :

우리가 코멘트에 구체화로 http://fftw.org/

+1

라이센스가 문제 일 수 있습니다. –

+0

Ugghh ... GNU 스탬프가 누락되었습니다. 그들은 유료 라이센스를 제공하는 것 같지만 내 생각 엔 그것이 팔과 다리가 될 것입니다. 그 (것)들을 위로 울리고 묻기 위하여 낙상하지 말라. http://fftw.org/faq/section1.html#nonfree – selbie

+1

지난 번 확인한 시간에 상용 라이센스로 5,000 달러였습니다. –

2

KISSFFT은 Windows API가 아닙니다. 그러나 모든 프로젝트에 멋지게 내장 할 수있을만큼 작습니다. 기본 복합체 - 복합 변환에 대한 ANSI C 소스 코드는 약 30kb입니다. 다른 초소형 FFT 라이브러리와 달리이 라이브러리는 빠르고 기능이 뛰어나며 정확하며 멀티 스레드 프로그램에서 사용할 수 있습니다.

키 기능 중 하나는 KISSFFT가 혼합 기수 (2,3,5의 배수가 가장 빠름)를 수행 할 수 있다는 것입니다. 다른 "볼트 온"기능은 tools 디렉토리에서 사용할 수 있습니다.

speed은 일반적으로 대부분의 응용 프로그램에 충분히 빠르며 fftw 나 공급 업체만큼 빠르지는 않습니다 (다차원 변환, 실제 최적화 된 변환 (즉, 반 스펙트럼), 빠른 회선 등). 라이브러리가 있지만 나머지 라이브러리보다 빠릅니다.

KISSFFT의 accuracy은 그 밖의 FFT 라이브러리만큼 좋습니다.

라이센스는 3 clause BSD입니다.이 라이센스는 스펙트럼 끝에 한 장의 상용 응용 프로그램이나 다른 끝에있는 GPL 응용 프로그램에서 합법적으로 사용할 수 있습니다. 문서에서 간단한 속성 만 있으면됩니다.