Use nufft in stft - Non-uniform sampling for use in spectrogram for a time-series analysis
20 views (last 30 days)
Show older comments
Hello,
I have a time series analysis, that samples from something every T milliseconds. However, sometimes the measurement fails, and so I am (often) missing samples (sometimes several, or many in a row). I would like to create a spectrogram for this signal, and as such I need to perform a short-time Fourier transform on this data, which has non-uniform sampling.
I see there is a NUFFT function for non-uniform discrete fourier transforms (https://ch.mathworks.com/help/matlab/ref/double.nufft.html),
and also the STFT function for windowing the data into sections and performing a discrete Fourier transform on each section (https://ch.mathworks.com/help/signal/ref/stft.htm).
My question is whether I need to do my own windowing and STFTs with the NUFFT function in order to use non-uniformly sampled data in the STFT, or whether there is a better strategy or ideally a built-in function which allows me to do this.
Thank you for your help!
2 Comments
Answers (1)
Vilnis Liepins
on 6 Feb 2023
Hi mack,
As an alternative approach to 'nufft' you can try 'edft' function available on fileexchange Extended DFT - File Exchange - MATLAB Central (mathworks.com). Its application is quite simple - replace the missing samples with NaN and run: edft(your_data_with_NaN). In case your data doesn't have NaNs, 'edft' will apply Matlab's 'fft' function. Hope this helps!
See Also
Categories
Find more on Time-Frequency Analysis in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!