S变换的数值计算公式分析电子信息工程学院QuencyChenStockwell提出的S变换是小波变换的一种变种,不是严格的小波变换,也可以看做是STFT的一种变种。S变换的优点是遵循了傅里叶变换的物理含义,是一种较好的时域和频域联合的信号分析工具。并且S变换是线性的,可逆的。一般在计算时,采用离散信号进行数值求解,所以实际应用时,应该使用S变换的离散公式。但Stockwell给出的公式只考虑了实数频率域。如下102][1][NkNnkjekhNnH(1)先用DFT公式,即公式1计算出信号)(kh,k=0,1,…,N-1的离散频谱][nH.这里n的取值是0,1,…,N-1。(若设N为偶数,这里n大等于2/N时,实际上对应到频率域的负数域里去了,如果h(k)是实数信号,则负数域与实数域应该是共轭的。)然后再计算S变换出来的S域结果:NmtjNmnmeenmHntS2102222][),(,0n10)(1)0,(NmmhNtS,0n(2)这里首先有一个问题Stockwell的论文中没有提到,就是H[m+n]当取值超过N后怎么取,我觉得应该是借鉴DFT的思路,在时域离散,在频域要周期扩展,在频域离散,在时域要周期扩展,所以应该将H[n]周期扩展到整个频域,因此H[m+n]可以在整个频域进行取值。这里还有一个问题就是公式2中的n对应的是频率f,NTnn,T为采样间隔时间,其作用类似小波变换中的控制小波只作用于局部时间范围,从S变换的连续方程中可以看出,f越大幅度衰减越快,作用的时间域范围越窄,这是有物理含义的。对于离散信号因为受Nyquist采样定律的限制,对离散信号分析时,实际频域应该只能221NnT,但如果直接使用公式2计算,n则可能最大取到N-1,似乎不对。以下是我仿真的情况。图1a,最上面是时域图,中间是DFT,下面是选择一个时刻t的S变换中的一维曲线,图1b是S变换后的二维图。从图1可以看出,在负频率部分的结果不对。我估计之所以这里不对的原因是因为Stockwell可能处理的信号是实数信号,所以不关注负频率部分。所以我把上面的计算方法改了一下,变为If0n,n从1开始取值,且22Nn,N为偶数,21Nn,N为奇数NmtjNmnmeenmHntS2102222][),(If0n,n从2N,N为偶数,从21N,N为奇数,开始取值,取到1NNmtjNmNnmeenmHntS210)(2222][),((3)图2修正离散S变换公式但为什么正负频不对称呢?这里我们仔细观察公式3,会发现,如果取t=0,则公式3中的相位因子就可以去掉,公式3就变为。102222][),0(NmnmenmHnS(4)公式4中m的取值就是改变DFT每个频点幅度的权重因子。可以看出当m=0所对应的H(n)始终取得最大的权重因子1;而且n越大,也就是频率越高,权重因子随频率变化衰减的越慢。相当于S变换低频段的频率分辨率更高。而相位因子是固定的,由于高频段同样相位对应的时间短,所以S变换高频段的时间分辨率更好。这里可以回答为什么正负频不对称了,因为H[n]在计算公式4时不满足频偏越大权重越小,因为FFT做出来的频率横轴上,频率变化不是单向的,而且正负频扭曲了(fftshift)。解决办法是将公式2的计算放到正负频轴上来计算。公式2改为先取N为奇数,0n,n从21N,取到21NNmtjNNmnmeenmHntS221212222][),(再取N为偶数,0n,n从2N,取到22NNmtjNNmnmeenmHntS22222222][),(这里奇数和偶数可以统一为NmtjNfloorNfloormnmeenmHntS2)21()21(2222][),((5)S反变换NnkjNnNtentSNkh21010}),(1{][