2010-12-21 6 views
0

Excel의 (2007) FFT 기능을 사용하려고하는데 2^n 데이터 포인트가 필요합니다.엑셀 고속 푸리에 변환 도움말

나는 두 가지 모두가 서로 다른 결과를 줄 시도

: N (데이터 포인트의 수) 2

  • 사용하십시오 divide-의 가장 가까운 전원에 도달하도록 제로로

    1. 패드 데이터 값을 즉 112 데이터 포인트가있는 경우 64, 32, 16 (112 = 64 + 32 + 16)의 FFT를 수행합니다.

    더 나은 접근 방법은 무엇입니까? 나는 VBA 매크로를 작성하는 것이 편안하지만 N의 힘이 2 인 제약을 요구하지 않는 알고리즘을 찾고있다. 아무도 도와 줄 수 있는가? 제로

    2^N과

  • +0

    O (n^2) 인 이산 푸리에 변환을 항상 계산할 수 있음을 기억하십시오. –

    답변

    2

    0으로 채우는 것이 올바른 방향이지만 주파수 내용을 추정하기 위해 변환을 수행하는 경우 window function이 필요하며이 값은 짧은 블록에 적용되어야합니다 (예 : if 당신은 2000 포인트를 가지고 2000 포인트 한 윈도우를 적용한 후 2048로 패드를하고 변환을 계산합니다).

    추가 기능을 개발하는 경우 많은 FFT 라이브러리 중 하나를 사용하는 것이 좋습니다. 나는 마르크 Borgerding의 KISS FFT의 큰 팬이다. 많은 블록 크기, 즉 2,3,4 및/또는 5로 분해 할 수있는 모든 블록 크기에 대해 빠른 변환을 제공합니다. 그러나 소수 크기의 블록을 처리하지는 않습니다. 매우 평범한 C로 작성되었으므로 C#으로 이식하는 것이 쉬워야합니다. 또는 this SO question은 .NET에서 사용할 수있는 라이브러리를 제안합니다.

    1

    패드 아웃은 FFT 알고리즘을 요구한다.

    알려진 시간 계열 (예 : 단일 주파수의 단순 사인 또는 코사인)의 테스트 일 수 있습니다. 당신이 그것을 FFT하면, 당신은 단일 주파수 (Dirac 델타 함수)를 얻어야합니다. 다른 것은 오류입니다. 2의 정수 배수로 수행하고 0으로 채운다.

    +0

    2^n은 "갖기 좋은"속성이 아닙니까? 나는 FFT의 중심에있는 분할 및 정복 접근법을 통해 복합 숫자가 블럭화되어 있다고 생각했습니다. – mtrw

    +0

    FFT에 관해서 마지막으로 읽었을 때 요구 사항이었습니다. 엑셀 구현의 세부 사항을 모르므로 받아 들일 수있는 부분과 그렇지 않은 부분을 맹세 할 수는 없습니다. – duffymo

    +0

    2^n aka'radix 2'는 FFT의 가장 일반적인 구현물 일뿐입니다. 그러나 다른 크기도 가능합니다. 일반적으로 작은 소수 인 radits를 사용합니다. 'radix 3' 또는'radix 5', 때때로 조합형, 일명'mixed radix' FFT입니다. 2^n이 아닌 크기를 지정하면 FFTW는 혼합 기수 FFT를 사용하려고 시도합니다. –

    3

    데이터를 더 작은 비트로 나누면 오류가 발생하며, 특히 데이터 수가 적을수록 오류가 발생합니다.

    0으로 채우는 것이 더 좋은 아이디어이며 FFT에 대한 일반적인 접근법입니다. FFT를 수행하는 다른 방법에 관심이 있다면 옥타브가 대신 해줄 것이며 대부분의 MATLAB 문서가 적용되므로 문제가 없어야합니다.

    +0

    또한 옥타브 구현은 2^n 샘플을 제공하도록 강요하지 않는다고 생각합니다. – sheepez

    +0

    다른 알고리즘이 아니라면 어떻게 관리하는지 궁금 할 것입니다. – duffymo

    +0

    Excel에서이 작업을 수행하려고합니다. 기본적으로이 분석에서는 Excel 용 추가 기능을 개발하려고합니다. –