MATLAB: If the number of samples for doing fft is not n power of 2 the results accuracy would be affected or it is just matter of speed of calculations

fft number_of_smples

Hello
I am wondering if I use 10000 samples and do the fft my results would be much different comparing to when I have exactly the samples equal to n power of 2 ? is Matlab doing the zero padding automatically ? or I should do zero padding ?
further information :
I am using matlab version 2012b, fft function to perform the dft on my samples. I have the time domain data for 10 minutes with sampling rate of 50 KHz. type of my work necessitates me to devide the time domain data in 200 ms windows. and after performing the fft on these 200 ms windows, I make an average over the different window results. 200 ms in 50 Hz frequency system which is sampled by 50Khz means about 10000 samples for each fft operation.
regards, Ali

Best Answer

There are two reasons to zero pad an fft. First reason is speed. A sample size that is a power of two is going to be the fastest possible. A sample size that is factorizable into small primes is a little slower. A prime number is slowest. However, for modern computers and a sample size on the order of 10,000 this is probably the difference between the fft taking 50 ms and it taking 60 ms. I'm guessing here, I haven't actually tried it, but you probably won't even notice the difference. Now in 1970, this might have been the difference between 5 minutes and 6 minutes, so it was a big deal back then.
Now, if you want to do 100,000,000 sample sizes, then maybe it makes a difference.
The other reason to zero pad an FFT is to a little better frequency resolution. I give some demonstrations on this on a little tutorial I wrote here: http://mechanicalvibration.com/Zero_Padding_FFTs.html