连续小波变换程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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('尺度')

相关文档
最新文档