matlab小波奇异性检测

img


怎么从这张图上判断奇异点的分布和模极大值的变化,用的是dN8小波分解的,请大家帮忙分析一下图,价格可以另说

看图显示不正常。运行不稳定,出现分段异常。

小波变换方法
小波分析方法是一种时间和频率窗口大小(即窗口面积)固定但形状可变的时频局域化分析方法,即:在低频部分具有较高的频率分辨率和较低的时间分辨率,在高频部分具有较高的时间分辨率和较低的频率分辨率;小波分析的目的是——既见到森林(信号的概貌),又要看到树木(信号的细节),因此被誉为“数学显微镜”。
小波变换的模极大值和多分辨率分析
原始信号可以按一定的尺度被分解成几个具有不同分辨率的分量,而且由这些分量能够不失真地重构原始信号。多分辨分析理论为人们讨论信号的局部信息提供了一个直观的框架,即认为任何一个信号都可以分解为两部分:低频(主体信息)和高频(细节纹理)。为了将信号的低频与高频部分分开处理,Mallat提出了信号的多分辨分解与重构的算法,其地位在小波分析中相当于快速Fourier算法在经典Fourier分析中的地位。
奇异性的数学描述
一般情况下,信号的奇异性通常分为两种:一种是信号在某一时刻其幅值发生变化,使得信号出现非连续的跳跃,被称为第一类间断点;另一种是信号外观光滑,但信号的一阶导数不连续且发生突变,被称为第二类间断点。通常而言,人们用Lipschitz指数α来描述函数的局部奇异性。Lipschitz指数给出了信号f(t)在x0处光滑性的精确信息:α越大,则函数越光滑,α越小,说明函数奇异性越大。
小波奇异值监测举例
我们以数据起始点,检测至间与的协整关系。通过使用小波分析的奇异值检测方法对收益率回归后的残差序列进行监测,我们发现自起,与间协整关系发生突变。


fs=2^6;    %采样频率
dt=1/fs;    %时间精度
timestart=-8;
timeend=8;
t=(0:(timeend-timestart)/dt-1)*dt+timestart;
L=length(t);
z=4*sin(2*pi*linspace(6,12,L).*t);

%定义计算范围和精度
fmin=2;
fmax=20;
df=0.1;
totalscal=(fmax-fmin)/df;
f=fmin:df:fmax-df;%预期的频率

%自己实现的小波函数
coefs2=cwt_cmor(z,1,3,f,fs);
figure(3)
pcolor(t,f,abs(coefs2));shading interp


%后面是函数
function coefs=cwt_cmor(z,Fb,Fc,f,fs)
%1 小波的归一信号准备
z=z(:)';%强行变成y向量,避免前面出错
L=length(z);
%2 计算尺度
scal=fs*Fc./f;

%3计算小波
shuaijian=0.001;%取小波衰减长度为1%
tlow2low=sqrt(Fb*log(1/shuaijian));%单边cmor衰减至1%时的时间长度,惨叫cmor的表达式

%3小波的积分函数
iter=10;%小波函数的区间划分精度
xWAV=linspace(-tlow2low,tlow2low,2^iter);
stepWAV = xWAV(2)-xWAV(1);
val_WAV=cumsum(cmorwavf(-tlow2low,tlow2low,2^iter,Fb,Fc))*stepWAV;
%卷积前准备
xWAV = xWAV-xWAV(1);
xMaxWAV = xWAV(end);
coefs     = zeros(length(scal),L);%预初设coefs

%4小波与信号的卷积
for k = 1:length(scal)    %一个scal一行
    a_SIG = scal(k); %a是这一行的尺度函数

    j = 1+floor((0:a_SIG*xMaxWAV)/(a_SIG*stepWAV));
        %j的最大值为是确定的,尺度越大,划分的越密。相当于把一个小波拉伸的越长。
    if length(j)==1 , j = [1 1]; end
    
    waveinscal = fliplr(val_WAV(j));%把积分值扩展到j区间,然后左右颠倒。f为当下尺度的积分小波函数
    
    %5 最重要的一步 wkeep1取diff(wconv1(ySIG,f))里长度为lenSIG的中间一段
    %conv(ySIG,f)卷积。
    coefs(k,:) = -sqrt(a_SIG)*wkeep1(diff(conv2(z,waveinscal, 'full')),L);
    %
end
end