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