连续小波变换程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一:连续小波变换
实验目的:
通过编程更好地理解连续小波变换,从而对连续小波变换增加了理性和感性的认识,并能提高编程能力!通过连续小波变换了解信号中的频率分量。
实验原理:
一维连续小波变换公式:
()1*2(,)f t b W a b a
f t dt a ψ+∞
-
-∞
-⎛⎫= ⎪⎝⎭
⎰
当小波函数()t ψ为实函数时
(,)f W a b ()12(,)f t b W a b a
f t dt a ψ+∞
--∞
-⎛⎫== ⎪⎝⎭
⎰
在给定尺度下,对待分析信号()f t 和小波函数()t ψ按照s t nT =,s b nT =进行采样,其中s T 为采样间隔,则小波变换可近似如下:
()12
()(,)s f s s
n n k T W a b T a
f nT a ψ-
⎛⎫
-= ⎪⎝⎭
∑ =()1
2
n
n k T a
f n a ψ-
-⎛⎫∆ ⎪⎝⎭∑
对给定的a 值,依次求出不同a 值下的一组小波系数,由于数据采样间隔∆t 为0.03
(常量),所以可以把这个系数忽略,并通过公式下面对小波变换矩阵进行归一化处
理。
(,)(,)min
*255max min
m n wfab m n I -=
-
、
实验结果:
程序附录:
(1)墨西哥小波函数
function Y=mexh0(x)
if abs(x)<=5
Y=((pi^(-1/4))*(2/sqrt(3)))*(1-x*x)*exp(-(x*x)/2);
else
Y=0;
end;
(2)实验程序
load('data.mat');
n=length(dat);
amax=70; % 尺度a的长度
a=zeros(1,amax);
wfab=zeros(amax,n); %小波系数矩阵
mexhab=zeros(1,n); % ,某尺度下小波系数
for s=1:amax %s 表示尺度
for k=1:n
mexhab(k)=mexh0(k/s);
end
for t=1:n % t 表示位移
wfab(s,t)=(sum(mexhab.*dat))/sqrt(s); %将积分用求和代替
mexhab=[mexh0(-1*t/s),mexhab(1:n-1)]; %mexhab 修改第一项并右移 end
end
wfab_abs=abs(wfab);
for index=1:amax
max_coef=max(wfab_abs(index,:));
min_coef=min(wfab_abs(index,:));
ext=max_coef-min_coef;
wfab_abs(index,:)=255*(wfab_abs(index,:)-min_coef)/ext;
end
figure(1);
plot(dat);
title('原始数据图');
xlabel('时间')
ylabel('幅度')
figure(2);
image(wfab_abs);
colormap(pink(255));
title('连续小波变换系数图');
xlabel('时间')
ylabel('尺度')