N step fft in D language

matovitch camille.brugel at laposte.net
Sun Sep 15 10:07:54 PDT 2013


On Sunday, 15 September 2013 at 15:15:28 UTC, Kadir Erdem Demir 
wrote:
> I am using fft function from std.numeric
>
> Complex!double[] resultfft = fft(timeDomainAmplitudeVal);
>
> The parameter timeDomainAmplitudeVal is audio amplitude data. 
> Sample rate 44100 hz and there is 131072(2^16) samples
>
> I am seeing that resultfft has the same size as 
> timeDomainAmplitudeVal(131072) which does not fits my 
> project(also makes no sense) . I need to be able to divide FFT 
> to N equally spaced frequencies. And I need this N to be 
> defined by me .
>
> Is there anyway to implement this with std.numeric.fft or can 
> you have any advices for fft library?
>
> Ps: I will be glad to hear if some DSP libraries exist also

When you perform a classic DFT the size of the resulting vector 
is the same since it is reversible (square matrix see 
http://en.wikipedia.org/wiki/DFT_matrix). If you want to get a 
larger vector, it is useless see Nyquist–Shannon sampling 
theorem. Otherwise I don't know any library which provide this 
kind of fft (with the possibility to made the matrix 
rectangular). You got 2 option :

- taking the good samples in the produced vector. (complexity 
O(nlog n))
- shrinking your vector first (O(n/k log (n/k))


More information about the Digitalmars-d-learn mailing list