分数S(Stockwell)变换Matlab代码

分数S变换(FrST)

离散的FrST

在这里插入图片描述在这里插入图片描述

Matlab代码

function FRST= FrST(t,sig,freqlow,freqhigh,alpha,seta)
% Jinshun Shen,Xidian University, March 2022
%jsshen@stu.xidian.edu.cn
% This program can not be used for commercialization without the authorization of its author. 
%FrST 分数S(Stockwell)变换
if size(sig,1)~=1
    sig=sig';
end
if size(t,1)~=1
    t=t';
end

s=sig.*exp(0.5*1i*2*pi*(t.*t)*cot(seta));
st=myst(t,s,freqlow,freqhigh,alpha);
FRST=st.*exp(-0.5*1i*2*pi*(t.*t)*cot(seta));
end

function wcoefs = myst(t,Sig,freqlow,freqhigh,alpha)
% Jinshun Shen,Xidian University, March 2022
%jsshen@stu.xidian.edu.cn
% This program can not be used for commercialization without the authorization of its author. 

%======输入======%
%t:时间序列
% Sig: 输入信号
%freqlow,freqhigh:频率范围
%alpha:频率分辨率
%======输出======%
% wcoefs: ST变换计算结果

if (nargin <= 2)

error('At least 2 parameters required');

end

if (nargin < 5)
    alpha=0.05;
elseif (nargin < 4)
    freqhigh=log(length(t));
elseif (nargin < 3)
    freqlow=1;
end

if size(t,1)>1%t是列向量,则转置
    t=t';
end
if size(Sig,1)>1%Sig是列向量,则转置
    Sig=Sig';
end
% 信号的长度
SigLen = length(Sig);
% 时间的长度
TimeLen = length(t);
dt=t(2)-t(1);
fre=freqlow:alpha:freqhigh;%产生频率范围
% time=1:TimeLen;
if SigLen > TimeLen%信号长度大于时间长度,时间补0
    t=[t  zeros(1,SigLen-TimeLen)];
end
if SigLen < TimeLen%信号长度小于于时间长度,信号补0
    Sig=[Sig  zeros(1,TimeLen-SigLen)];
end
% 总频率数量
nLevel=length(fre);
% 分配计算结果的存储单元
wcoefs = zeros(nLevel,TimeLen); 
temp=zeros(1,TimeLen);
% sigma_f=lamda*((2*pi*fre).^p)+q;
sigma_f=15./fre;
for m = 1:nLevel
% 计算各频率上的ST系数
% 提取频率参数
f= fre(m);
% sigma_f=f*2*pi;
    for n=1:TimeLen
        %计算高斯窗函数
        Gauss_st=(1/(sqrt(2*pi)*sigma_f(m)))*exp(-0.5*((n*dt-t).^2/(sigma_f(m))^2)).*exp(-1i*2*pi*f*t);
         temp(n)=trapz(t,Sig.*Gauss_st);%效率低,精度稍高
    end
wcoefs(m,:)=temp;
end

end

实验结果

在这里插入图片描述

[1] Srivastava H M , Shah F A , Tantary A Y . A family of convolution-based generalized Stockwell transforms[J]. Journal of Pseudo-Differential Operators and Applications, 2020, 11(4).

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值