How to efficiently update a discrete time FFT?

4 views (last 30 days)
I have an application that needs to be optimized for speed. It's a realtime app that is required to perform a number of FFTs at relatively fast discrete time interval. The transform inputs are discretely sampled time histories of real time physical processes. Therefore the time history for a given interval is the same as the previous accept it is shifted one position and one end point is lost and one is point is added. I know there must be a straight forward way to implement a faster FFT. Can somebody point me in the right direction?

Accepted Answer

Matt J
Matt J on 12 Dec 2012
Edited: Matt J on 12 Dec 2012
If you are doing fft(x), I assume that x(1)=x_old gets deleted and x(N) gets replaced by x_new
%pre-computations, do these only once
c=exp(pi*2i*(0:N-1)/N);
X=fft(x0); %inital FFT
%end of pre-computations
X = (X +(x_new - x_old)).*c; %update the FFT

More Answers (0)

Categories

Find more on Fourier Analysis and Filtering in Help Center and File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!