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 ?
74 次查看(过去 30 天)
显示 更早的评论
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
2 个评论
Greg Dionne
2014-8-15
You won't need to do zero padding, so feel free to just use your samples as-is.
MATLAB internally computes the FFT without any zero padding at all. Since your sample size is easily factorizable into small primes (10000 = 2*2*2*2*5*5*5*5), it will break down the FFT into smaller sizes. Then it will use split- and mixed- radix FFT's to build the larger 10,000 pt. FFT.
If you have a large prime factor, P, the FFT will use Rader's algorithm to sub-divide that portion of the FFT into a circular convolution of size P-1.
Hope this helps.
-Greg
采纳的回答
Daniel kiracofe
2014-8-17
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
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!