今天我们主要讲一下改进多重同步压缩变换improved multisynchrosqueezing transform(IMSST)在信号处理中的应用,多给几个例子对比一下,多重同步压缩变换MSST的相关理论在后续的文章中会讲。
原文:A multisynchrosqueezing-based high-resolution time-frequency analysis tool for the analysis of non-stationary signals
先说一下背景,传统时频分析方法诸如小波分析,短时傅里叶变换等在分析非平稳信号时,生成的时频谱中视频脊线通常过于模糊,无法为信号提供更精确的表征,因此小波理论联合创始人Daubechies教授提出了同步挤压小波变换SST,有效提高了信号的时频分辨率。与此同时,有学者提出多重同步压缩变换MSST,MSST将SST的结果进行多次同步压缩操作,进一步增强了信号的时频聚集特性。然而,MSST 存在一个主要问题,即存在“没有重新进行能量分配的点”(non-reassigned point)的问题,会导致时频平面上某些点的能量模糊。因此该文使用一种简单的策略来解决这个问题,即通过两个"四舍五入"过程,使得时频系数
重新分配给一个频率点 ,即将“没有重新进行能量分配的点”重新进行能量分配,一定程度上解决了 MSST 的能量模糊问题,原理就是这样,原文推导较为复杂,整个算法过程如下。
下面先给两个例子看一下,第一个是调频信号
clear;
SampFreq = 100;
t = 0 : 1/SampFreq : 4-1/SampFreq;
Sig = [sin(2*pi*(25*t + 10*sin(1.5*t)))];
[m,n]=size(Sig);
time=(1:n)/SampFreq;
fre=(SampFreq/2)/(n/2):(SampFreq/2)/(n/2):(SampFreq/2);
看一下其IMSST时频谱图
第二个是蝙蝠回声信号的例子
load('batdata2.mat');
SampFreq = 1000000/7;
n=length(data);
time=(1:n)/SampFreq;
fre=(SampFreq/2)/(n/2):(SampFreq/2)/(n/2):(SampFreq/2);
time=time*1000;
fre=fre/1000;
看一下其IMSST时频谱图
现在我们开始对比,首先再用一个稍微复杂的调频信号进行分析
clc
clear
t=linspace(0,10,2000);
x=cos(2*pi*(0.1*t.^2.6+3*sin(2*t)+10*t)) + exp(-0.2*t).*cos(2*pi*(40+t.^1.3).*t);
看一下其CWT时频谱(纵坐标是错的,应该改为尺度)和SST时频谱
放大一些
看一下IMSST时频谱
放大一些
可见,IMSST效果并不是很好
其次,再用一个二次chirp信号进行对比
load quadchirp;
load tquad;
fs = 1000;
t=tquad;
x=quadchirp;
其CWT时频谱图如下
其SST时频谱如下
最后看下IMSST时频谱
再对比一下地震信号的例子
load kobe;
dt = 1;
x=kobe;
其CWT时频谱图如下
相应的SST时频谱
放大一下
最后看一下IMSST时频谱
局部放大一下
SST和IMSST的效果就不用我多说了
看最后一个例子,模拟轴承冲击信号
clc;clear
fs = 24000;
load bearing
x=bearing;
其CWT时频谱
其SST时频谱
局部放大,可以看到很明显的冲击成分
最后看一下IMSST时频谱
局部放大
emmm,洗洗睡吧
最后,强调一点,同步挤压变换系列基本都是围绕着瞬时频率及群延迟进行改进的,比如对其进行若干阶泰勒展开等等,效果较稳定还就是Daubechies大佬提出的SST算法。
SST可应用的信号:生理信号(脑电,心电,肌电等),机械振动信号,金融时间序列,雷达信号,及各种声信号等等