我采用Matlab函数编程实现。具体程序见smallExpm,GetSig
alm,ImageWTm,MM_WTm,SkelMapm。各个函数的主要说明如下:1)smallExpm:fu
ctio
LipssmallExp函数功能:检测信号的阶梯型边界点。首先设计信号,计算信号在多个尺度下的小波变换wt,计算模极大点并连接模极大曲线,然后根据判定阶梯型边界的两种算法检测信号的阶梯型边界点。同时在函数中画出小波变换图和模极大曲线图。
f输出参数:Lips:输出结果即奇异点位置和奇异指数列表。2)GetSig
alm:fu
ctio
sigGetSig
al函数功能:引用wavelab中的数据即AWaveletTourofSig
alProcessi
g2
deditio
中fig66的信号。输出参数:sig:所构造的信号3)ImageWTm:fu
ctio
ImageWTwt
s_scalel_scale函数功能:画出信号的小波变换结果输入参数:wt:小波变换矩阵
:信号长度s_scale:小波变换的尺度下界l_scale:小波变换的尺度上界4)MM_WTm:fu
ctio
maxmapMM_WTwtwi
dowSizepar函数功能:计算模极大点,小波变换值为局部极大标记为1,小波变换值为局部极小则标记为1。输入参数:wt:小波变换矩阵wi
dowSize:邻域大小par:计算自适应阈值所用参数,小于最大值的1par的极大点将被丢弃。输出参数:maxmap:极大点矩阵5)SkelMapm:fu
ctio
skellistskelptrskelle
SkelMapmaxmap函数功能:连接模极大曲线输入参数:maxmap:极大点矩阵输出参数:skellist:模极大曲线列表,依次记录每条曲线,第一行记录尺度,第二
f行记录位置。skelptr:模极大曲线起始点列表,依次记录每条曲线的起始点在skellist中的位置。skelle
:模极大曲线长度列表,依次记录每条曲线的长度。
4实验结果
1基本实验
图1是AWaveletTourofSig
alProcessi
g2
deditio
中fig66的信号及其小波变换。
04ft02050012345050100150200250300350400450500100150200250300350400450500
log2s
图1fig66的信号及其小波变换
图2是其模极大曲线,其中模极大点计算时邻域取值为1。
0051152log2s253354455
0
50
100
150
200
250u
300
350
400
450
500
图2fig66的模极大曲线(极大点邻域为1)
图3是图2中第5、第6条曲线在log2slog2Wfsu平面上的曲线图,其中实线对应第5条曲线即奇异点163,虚线对应第6条曲线即奇异点305,
f两条曲线的斜率分别约为05和14,因此对应的奇异值为0和09,符合我们直观上的理解。所有曲线对应奇异点的奇异值如表1。
1012log2WTsu345678
0
05
1
15
2
25log2s
3
35
4
45
5
图3模极大曲线在log2slog2Wfsu平面上的曲线图位置Lipschitz指数52126326510468771262r