在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
https://ww2.mathworks.cn/matlabcentral/fileexchange/45848-stockwell-transform--s-transform- Compute S-Transform without for loops 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 相比ST效率会更高一点 但是,处理的矩阵长度大概都在10000左右,再多一点就报错,没有spectrogram高效。 spectrogram可以处理更长时间的数据。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论