I still try to understand FFT :) I know I can do something like that:
float bufferSize = 500.0f;
int correction = log2(bufferSize);
bufferSize= pow(2, correction);
But then I get buffer size 256. So it doesn't use all samples in the buffer. But I've heard there are some methods to make FFT with buffer size for example 500. And use all possible samples. Could anyone explain me how to do that? Great thanks in advance.
So I need to develop my question :)
I’ve just read Rabiner, Lawrence R., and Bernard Gold. "Theory and application of digital signal processing." Of course not all but the fragment titled “A Unified Approach to the FFT”.
And there is about dividing N-point sequence to make matrix. I even implemented in C++ exact example from that book with N=60 points of sequence. But I am not sure if I understand the idea (maybe it’s because English is not my first language).
Firstly in the book they say to make matrix 60=5 X 12, and further they say to pay attention that we can divide each 12 points to make matrix 3 X 4. But although it is said, the further calculations are only for 5 X 12. Why not 5 X 3 X 4? Is it only for make explanations easier? Or what?
And more important question is what exactly that matrix division give me? Stanley Pawlukiewicz says about my example (when N=500) to make prime factors 2 2 5 5 5. So as I understand it’s 5 dimensional matrix, 2 X 2 X 5 X 5 X 5? Am I right?
But to make DFTs on that matrix I still need to make 500x500=250000 calculations, so it’s like regular DFT, not any FFT. I could imagine I can make 125 X 4 points FFTs (4 is 2 to the power of 2). But if it’s the idea, why we are not talking about matrix 125 X 4, but instead we are talking about matrix 2 X 2 X 5 X 5 X 5?
In which point here is FFT?