Use nufft in stft - Non-uniform sampling for use in spectrogram for a time-series analysis

조회 수: 6 (최근 30일)
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
Charlotte
Charlotte 2024년 4월 17일
Hi! Have you find a solution for this problem? Thanks!
mack
mack 2024년 4월 17일
Hello,
Nothing particularly satisfying but something that at least works. I had to do a bunch of other work before resolving this 100%, but in the interim there is just one (as far as I know) matlab function which can handle very irregularly spaced data:
pspectrum(samples, sample_times, 'spectrogram');
With this you can specify the specific time at which each sample was measured.

댓글을 달려면 로그인하십시오.

답변 (1개)

Vilnis Liepins
Vilnis Liepins 2023년 2월 6일
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!
  댓글 수: 1
mack
mack 2023년 2월 8일
편집: mack 2023년 2월 8일
This does not help, as there is nothing wrong with nufft. I need something that can perform the short-time version of this, including windowing, which your function does not do. Thanks for the help anyway.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Time-Frequency Analysis에 대해 자세히 알아보기

제품


릴리스

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by