您的当前位置:首页正文

连续小波变换程序

2021-04-20 来源:易榕旅网


实验一:连续小波变换

实验目的:

通过编程更好地理解连续小波变换,从而对连续小波变换增加了理性和感性的认识,并能提高编程能力!通过连续小波变换了解信号中的频率分量。

实验原理:

一维连续小波变换公式:

12Wf(a,b)atbft*dta

当小波函数(t)为实函数时

12

Wf(a,b)Wf(a,b)atbftdta

在给定尺度下,对待分析信号ft和小波函数(t)按照tnTs,bnTs进行采样,其中

Ts为采样间隔,则小波变换可近似如下:

Wf(a,b)Tsa12(nk)TsfnTsan

nkfna

=

Ta12n

对给定的a值,依次求出不同a值下的一组小波系数,由于数据采样间隔t为0.03(常量),所以可以把这个系数忽略,并通过公式下面对小波变换矩阵进行归一化处理。

wfab(m,n)min*255maxmin

I(m,n)、

实验结果:

程序附录:

(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('尺度')

因篇幅问题不能全部显示,请点此查看更多更全内容