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
前程算法屋
- 粉丝: 5976
- 资源: 835
最新资源
- 职工安全教育培训档案.docx
- 职业技术学院差旅费审批表.docx
- 职业技术学院教学事故责任认定申诉表.doc
- 职业技术学院取消学生考试资格审批表.docx
- 职业学院年招生政治考察表.doc
- 质保金到期付款证明.docx
- 智慧教室使用审批单.doc
- 中等职业学校专业课教师面试测试标准.doc
- 重大事项和重点工作实施单位监督记录表.docx
- 专业教学计划调整申请表.docx
- 专业核心课程设置表.docx
- 势能法求解含齿根裂纹的直齿轮时变啮合刚度,根据Wu文献并结合其它文献采用MATLAB编写的含齿根裂纹的时变啮合刚度程序,同时考虑了齿轮变位情况 另有考虑双齿啮合时,齿基刚度重复计算的修正程序 如有
- 直流无刷电机控制(FOC):速度闭环模式 直流无刷电机控制(FOC):电流模式 直流无刷电机控制(FOC):位置模式
- 工业互联网试题及答案 单选
- 基于 TransUnet 对房屋建筑图纸图像语义的分割实战【包含代码+数据集,一键运行】
- 西门子 博途 通讯库,可以通过标签寻址 可以用于C++,.Net及Labview开发的上位机 产品亮点 支持控制器类型S7-200, S7-1200, S7-1500, S7-300, S7-400
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈