An algorithm and network is described in a companion conference paper that implements a sliding Discrete Fourier Transform, such that it outputs an estimate of the DFT value for every input sample. Regular DFT algorithms calculate a complex value that is proportional to the amplitude and phase of an equivalent sine wave at the selected analysis frequency. The analysis frequency that can be selected is typically an integer multiple of the frequency increment of the DFT algorithm, and this might not necessarily correspond to the desired analysis frequency. The sliding DFT algorithm proposed here overcomes this limitation, and permits the analysis frequency to be any value up to half the sampling frequency. The proposed sliding DFT algorithm is demonstrated by analysing a synthetic sine wave, and the exhaust noise from a V8 diesel engine.
These Simulink models accompany the conference paper:
Carl Q. Howard (2022), "Application of Improved Sliding DFT Algorithm for Non-Integer k", Acoustics 2021, Annual Conference of the Australian Acoustical Society, Wollongong, New South Wales, Australia, 21-23 February 2022.
The conference paper describes applications of the sliding Discrete Fourier Transform (SDFT) that was originally proposed in the journal paper:
Lyons, R and Howard, C.Q. (2021), "Improvements to the Sliding Discrete Fourier Transform", IEEE Signal Processing Magazine, vol 38, n4, p119-127, doi: 10.1109/MSP.2021.3075416
shown as Figure 5 in the journal paper.
The Simulink model that was uploaded was 'saved as a previous version', in R2016a to enable compatibility with a wider range of Simulink releases.
Before executing the Simulink model, at the Matlab command line, initialise the variables used in the Simulink model by entering the following commands:
Fs=3750; % Hz sampling frequency
nDFT=500; % number of lines for DFT
nFFT=2^9; % number of lines for FFT 2^9=512
Next, in the Simulink model, click the 'Run' button. The 'Amplitudes Scope' will display the DFT values of the various algorithms. The initial display of the results is confusing because there are so many results that are compared. In the legend of the graph, click the various lines to turn their display in the graph on and off. The 'datum' curve of interest is the yellow line labelled 'convert_DFT_amplitude', that shows the desired value that all algorithms should track towards. The proposed sliding DFT algorithm is labelled in the legend as 'Lyons and Howard Fig 5/1', as the curve with the red dots.
Other algorithms that are implemented and compared in the attached Simulink model include:
- Duda, K. (2010), "Accurate, Guaranteed Stable, Sliding Discrete Fourier Transform", IEEE Signal Processing Magazine, DSP Tips and Tricks, November, p124-127. DOI:10.1109/MSP.2010.938088
- Sysel and Rajmic, "Goertzel algorithm generalized to non-integer multiples of fundamental frequency", EURASIP Journal on Advances in Signal Processing 2012 2012:56. doi:10.1186/1687-6180-2012-56
- Fast Fourier Transform (FFT) algorithm.