- The frequency axis can be constructed in a different way. For example, a logarithmic scale for the frequency axis can be used, which would provide better resolution for low frequencies and less resolution for high frequencies.
- Alternatively, a linear scale for the frequency axis can be used, but specification of the minimum and maximum frequencies of interest is required, rather than using the entire range from 0 to 0.5.
- Using only the positive frequencies for the frequency axis and discarding the negative frequencies can also be helpful.

# How to use Dash code to get stockwell transform result?

8 views (last 30 days)

Show older comments

Hello,

I am trying to use Dash code to out put the grouph of Stockwell transform but I am quite confused of the variable f.

The code shows here

function ST=stran(h)

% Compute S-Transform without for loops

%%% Coded by Kalyan S. Dash %%%

%%% IIT Bhubaneswar, India %%%

[~,N]=size(h); % h is a 1xN one-dimensional series

nhaf=fix(N/2);

odvn=1;

if nhaf*2==N;

odvn=0;

end

f=[0:nhaf -nhaf+1-odvn:-1]/N;

Hft=fft(h);

%Compute all frequency domain Gaussians as one matrix

invfk=[1./f(2:nhaf+1)]';

W=2*pi*repmat(f,nhaf,1).*repmat(invfk,1,N);

G=exp((-W.^2)/2); %Gaussian in freq domain

% End of frequency domain Gaussian computation

% Compute Toeplitz matrix with the shifted fft(h)

HW=toeplitz(Hft(1:nhaf+1)',Hft);

% Exclude the first row, corresponding to zero frequency

HW=[HW(2:nhaf+1,:)];

% Compute Stockwell Transform

ST=ifft(HW.*G,[],2); %Compute voice

%Add the zero freq row

st0=mean(h)*ones(1,N);

ST=[st0;ST];

end

Can anyone explain what is f is and why I always got a zero value when analysis the audio file (f=[0:nhaf -nhaf+1-odvn:-1]/N;)? Thank you so much!

##### 0 Comments

### Accepted Answer

Abhimenyu
on 8 Dec 2023

Hi Jingyi,

I understand that you want to gain more information about the variable “f” used in the code of Stockwell transformation provided by you. The Stockwell transform (ST) is a method of time-frequency analysis that provides frequency-dependent resolution and preserves the phase information of the signal.

The variable “f” is a vector of normalized frequencies, ranging from 0 to 0.5 for the positive frequencies and from -0.5 to -1/N for the negative frequencies, where N is the length of the signal. The variable “f” is used to construct the frequency domain Gaussian windows that are applied to the Fourier transform of the signal. The expression “f= [0:nhaf -nhaf+1-odvn:-1]/N” constructs a symmetric frequency axis around 0 that ranges from 0 to “nhaf” and then from “-nhaf+1-odvn” to -1. Here, “nhaf” is the half-length of the input signal, “odvn” is a variable that is set to 1 if the length of the input signal is odd, and 0 if it's even, and “N” is the length of the input signal.

The frequency axis is a crucial parameter that affects the results of the transform. If you are getting a zero value when analysing an audio file, it might be because the frequency axis is not suitable for the audio signal.

One possible reason is that the frequency axis is normalized by the length of the input signal, which means that the frequency resolution is dependent on the signal length. For example, if the signal length is 1000 samples, then the frequency resolution is 0.001, which might be too coarse for some audio signals. On the other hand, if the signal length is 100000 samples, then the frequency resolution is 0.00001, which might be too fine for some audio signals.

Another possible reason is that the frequency axis is symmetric around 0, which means that it includes both positive and negative frequencies. However, for real-valued signals, such as audio signals, the negative frequencies are redundant and can be ignored. Therefore, only the positive frequencies for the Stockwell Transform are to be used, which would also reduce the computational cost and memory usage.

The below mentioned suggestions can improve the performance of the Stockwell Transform for the audio data:

I hope this helps to resolve the query.

Thanks,

Abhimenyu

### More Answers (0)

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!