This function gives the time-frequency distribution using S-transform in matlab. Credits to :
[1] Stockwell, R.G., "Localization of the complex spectrum: the S transform", IEEE Transactions on Signal Processing, Volume 44, Issue 4, Pg. 998 - 1001, doi : 10.1109/78.492555
This function is useful for implementation of papers such as :
[2] M.K. Das, S, Ari, "Analysis of ECG signal denoising method based on S-transform", Elsevier IRBM, Volume 34, Issue 6, Pg. 362-270, 2013, doi :doi:10.1016/j.irbm.2013.07.012
Aditya Sundar (2021). Time frequency distribution of a signal using S-transform (stockwell transform) (https://www.mathworks.com/matlabcentral/fileexchange/51808-time-frequency-distribution-of-a-signal-using-s-transform-stockwell-transform), MATLAB Central File Exchange. Retrieved .
Inspired by: Stockwell Transform (S-Transform)
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Create scripts with code, output, and formatted text in a single executable document.
Hello Maria Aurora Natale Castillo,
You can use signalAnalyzer to visualize the signal in a better way.
Thanks and regards,
Kartheek.
Could anyone be so kind as to help me? I'm trying to transform an ultrasonic signal. I 've applied the S-transform and I obtain a 4 rows x (length(timeseries) columns. I would like to visualize as a frequency-time map of the transformed signal. Can anyone tell me how to achieve it? Work on progress regarding ultrasonic seismic attenuation.
Thanks in advance!
Aurora
Thanks for the demo. But i think 'samplingrate' is the time interval between samples, rather than fs.
BTW wondering if you have ever used "generalized S-trans" ? Met some troubles coding it.
Thx.
Yes, the rows represent frequencies (whose number depends on the freq resolution or freq sampling rate) and the columns represent time.
Thanks for your reply, used this function:
Vtrain=[];
[sig,fs]=wavread('0Wheez01.wav')
frame =1024;
hamwin=hamming(frame);
for i=1:frame:length(sig)-frame;
s=sig(i:i+frame-1).*hamwin;
% stoklow function
[trainingSet,st_times,st_frequencies]=st(s,200,400,1024,6000);
Vtrain = [Vtrain ; trainingSet];
end
the size of the st-matrix is 39*1024 ;39=length(sig)/frame dose is the same th number of frequence and 1024 the number of time???
This function needs a time series input. SO please feed in the same, but define the correct frequency range for which you wish to extract the ST matrix
Hi i wish use this function to classify sounds but i don't know how to define variables: a,minfreq,maxfreq,samplingrate,
for me a is a frame composed by 1024 sample , fs= 6000 hz , th fmin =200hz and the max =400hz. should i convert it to time values please help me