function [Ts, IF, tfr] = LMSST_Y(x,hlength,le)
% Computes the SST (Ts) of the signal x.
% INPUT
% x : Signal needed to be column vector.
% hlength: The hlength of window function.
% OUTPUT
% Ts : The SST
[xrow,xcol] = size(x);
if (xcol~=1),
error('X must be column vector');
end;
if (nargin < 1),
error('At least 1 parameter is required');
end;
if (nargin < 2),
hlength=round(xrow/5);
le=round(hlength/2);
end;
if (nargin < 3),
le=round(hlength/2);
end;
%Siglength=xrow;
hlength=hlength+1-rem(hlength,2);
ht = linspace(-0.5,0.5,hlength);ht=ht';
% Gaussian window
h = exp(-pi/0.32^2*ht.^2);
% derivative of window
dh = -2*pi/0.32^2*ht .* h; % g'
[hrow,~]=size(h); Lh=(hrow-1)/2;
N=xrow;
t=1:xrow;
[~,tcol] = size(t);
tfr1= zeros (N,tcol) ;
%omega= zeros (N,tcol) ;
%tfr= zeros (round(N/2),tcol) ;
Ts= zeros (round(N/2),tcol) ;
%tfr0= ones (round(N/2),tcol) ;
IF= zeros (round(N/2),tcol) ;
for icol=1:tcol,
ti= t(icol); tau=-min([round(N/2)-1,Lh,ti-1]):min([round(N/2)-1,Lh,xrow-ti]);
indices= rem(N+tau,N)+1;
rSig = x(ti+tau,1);
%rSig = hilbert(real(rSig));
tfr1(indices,icol)=rSig.*conj(h(Lh+1+tau));
%tfr2(indices,icol)=rSig.*conj(dh(Lh+1+tau));
end;
tfr1=fft(tfr1);
%tfr2=fft(tfr2);
tfr=tfr1(1:round(N/2),:);
%tfr2=tfr2(1:round(N/2),:);
ft = 1:round(N/2);
bt = 1:N;
%%operator omega
nb = length(bt);
neta = length(ft);
%va=N/hlength;
omega = zeros (round(N/2),tcol);
%for b=1:nb
%omega(:,b) = (ft-1)'+real(va*1i*tfr2(ft,b)/2/pi./tfr1(ft,b));
%end
%omega=round(omega);
for b=1:nb%time
% Reassignment step
for eta=1:neta%frequency
%if abs(tfr1(eta,b))>0.0001%you can set much lower value than this.
[~,index]=max(abs(tfr1(max(1,eta-le):min(round(N/2),eta+le),b)));
omega(eta,b)=max(1,eta-le)+index-1-1;
%end
end
end
for b=1:nb%time
% Reassignment step
for eta=1:neta%frequency
%if abs(tfr1(eta,b))>0.0001%you can set much lower value than this.
k = omega(eta,b);
if k>=1 && k<=neta
Ts(k,b) = Ts(k,b) + tfr1(eta,b);
%SSO(k,b) = SSO(k,b) + tfr0(eta,b);
if abs(omega(eta,b)-eta)<0.5%default frequency resolution is 1Hz.
IF(eta,b)=1;
end
end
%end
end
end
Ts=Ts/(xrow/2);
end
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
局部最大同步压缩变换Local maximum synchrosqueezing transform.zip (18个子文件)
SST_Y.m 2KB
integ2d.m 1KB
renyi.m 2KB
sample_1.png 95KB
main.m 2KB
LMSST_Y.m 2KB
brevridge_Y.m 2KB
Sig_noise.mat 90KB
x.mat 150KB
brevridge_mult_Y.m 1KB
sample_3.png 94KB
figures
sample_1.png 96KB
sample_4.png 95KB
sample_3.png 94KB
sample_5.png 104KB
sample_2.png 93KB
sample_2.png 92KB
RS_Y.m 2KB
共 18 条
- 1
资源评论
前程算法屋
- 粉丝: 5539
- 资源: 788
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功