RWT的调用格式是:
RWT(x,nvoice,wavelet,oct,scale)
x:待分析信号
nvoice:两个尺度之间的取nvoice个间隔点
wavelet:小波名字
oct:原文中对oct的引用是noctave = floor(log2(n))-oct;看来oct是控制尺度范围的,但是尺度范围也由信号长度控制即: floor(log2(n))
scale:起始尺度值,后面将以2倍增,每两倍之间插入nvoice个间隔点。体现代码:
for jo = 1:noctave,
for jv = 1:nvoice,
qscale = scale .* (2^(jv/nvoice));
end
scale = scale .*2;
end
RWT的原理:
RWT采用的是循环卷积的形式来计算连续小波变换,当然只能是近似了。假设信号的长度为n,RWT也对相关小波函数采样n个点,当然采样的步长就和尺度有关系了。
本来采用循环卷积就应当直接求小波函数的采样值,然后求其fft,再和信号的fft相乘,最后求ifft,但是RWT为了节省一步计算量,直接对小波函数的傅立叶变换采样,具体体现是:
xi = [ (0: (n/2)) (((-n/2)+1):-1) ] .* (2*pi/n);
omega = n .* xi ./ qscale ;
if strcmp(wavelet,'Gauss'),
window = exp(-omega.^2 ./2);