小波变换的matlab实现,维小波变换MATLAB实现

《维小波变换MATLAB实现》由会员分享,可在线阅读,更多相关《维小波变换MATLAB实现(15页珍藏版)》请在人人文库网上搜索。

1、二维小波变换MATLAB实现,dwt2函数 功能:二维离散小波变换 格式:cA,cH,cV,cD=dwt2(X,wname) cA,cH,cV,cD=dwt2(X,Lo_D,Hi_D) 说明:cA,cH,cV,cD=dwt2(X,wname)使用指定的小波基函数wname对二维信号X进行二维离散小波变幻;cA,cH,cV,cD分别为近似分量、水平细节分量、垂直细节分量和对角细节分量;cA,cH,cV,cD=dwt2(X,Lo_D,Hi_D)使用指定的分解低通和高通滤波器Lo_D和Hi_D分解信号X,load woman; nbcol = size(map,1);%返回矩阵的行数和列数 cA1,。

2、cH1,cV1,cD1 = dwt2(X,db1); cod_x=wcodemat(X,nbcol);%返回矩阵X的编码矩阵,nbcol为编码的最大值 cod_cA1=wcodemat(cA1,nbcol); cod_cH1=wcodemat(cH1,nbcol); cod_cV1=wcodemat(cV1,nbcol); cod_cD1=wcodemat(cD1,nbcol); dec2d=cod_cA1,cod_cH1;cod_cV1,cod_cD1; subplot(1,2,1),imshow(cod_x,); title(量化后的图像); subplot(1,2,2),imshow(d。

3、ec2d,); title(二维离散小波分解后的图像,idwt2函数 功能:二维离散小波反变换 格式:X=idwt2(cA,cH,cV,cD,wname) X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R) X=idwt2(cA,cH,cV,cD,wname,S) X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S) 说明:X=idwt2(cA,cH,cV,cD,wname)由信号小波分解的近似信号cA和细节信号cH、cH、cV、cD经小波反变换重构原信号X;X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R)使用指定的重构低通和高通滤波器Lo_R和Hi_R重构原。

4、信号X;X=idwt2(cA,cH,cV,cD,wname,S)和X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S)返回中心附近的S个数据点,load woman; sX=size(X); cA1,cH1,cV1,cD1=dwt2(X,db4); A0=idwt2(cA1,cH1,cV1,cD1,db4,sX); subplot(1,2,1),imshow(X,) title(原始图像); subplot(1,2,2),imshow(A0,) title(由二维小波分解重构后的图像,wavedec2函数 功能:二维信号的多层小波分解 格式:C,S=wavedec2(X,N,wna。

5、me) C,S=wavedec2(X,N,Lo_D,Hi_D) 说明:C,S=wavedec2(X,N,wname)用小波基函数wname对二维信号X进行N层分解;C,S=wavedec2(X,N,Lo_D,Hi_D)用指定的分解低通和高通滤波器Lo_D和Hi_D分解信号X,waverec2函数 说明:二维信号的多层小波重构 格式:X=waverec2(C,S,wname) X=waverec2(C,S,Lo_R,Hi_R) 说明:X=waverec2(C,S,wname)由多层二维小波分解的结果C、S重构原始信号X,wname为使用的小波基函数;X=waverec2(C,S,Lo_R,Hi_。

6、R)使用重构低通和高通滤波器Lo_R和Hi_R重构原信号,load woman; c,s=wavedec2(X,2,sym4); a0=waverec2(c,s,sym4); subplot(1,2,1),imshow(X,) title(原始图像); subplot(1,2,2),imshow(a0,) title(重构后的图像,appcoef2提取二维信号小波分解的近似分量 load woman; c,s=wavedec2(X,3,db1);%用db1小波进行三层分解 ca1=appcoef2(c,s,db1,1);%提取一层近似分量 ca2=appcoef2(c,s,db2,2);%提取。

7、二层近似分量 imshow(X,); title(原始图像); figure,imshow(ca1,) title (第一层近似分量); figure,imshow(ca2,) title(第二层近似分量,detcoef2提取二维信号小波分解的细节分量 load woman; c,s=wavedec2(X,3,db1); chd2=detcoef2(h,c,s,1); cvd2=detcoef2(v,c,s,1); cdd2=detcoef2(d,c,s,1); imshow(X,) title(原始图像); figure subplot(1,3,1),imshow(chd2,) title(。

8、第一层分解的水平细节); subplot(1,3,2),imshow(cvd2,) title(第一层分解的垂直细节); subplot(1,3,3),imshow(cdd2,) title(第一层分解的对角细节,wrcoef2由多层小波分解重构某一层的分解信号 clear all load wbarb;image(X);colormap(map);colorbar; I=ind2gray(X,map);figure;I=imadjust(I,stretchlim(I),0,1);imshow(I); %j=imadjust(i,low_in;high_in,low_out,high_out)。

9、 将 i 中的亮度值映射到 j 中的新值 wname=sym2; c,s=wavedec2(I,2,wname); cA1=appcoef2(c,s,wname,1); ch1,cv1,cd1=detcoef2(all,c,s,1); cA2=appcoef2(c,s,wname,2); ch2,cv2,cd2=detcoef2(all,c,s,2); a1=wrcoef2(a,c,s,wname,1); h1=wrcoef2(h,c,s,wname,1); v1=wrcoef2(v,c,s,wname,1); d1=wrcoef2(d,c,s,wname,1); a2=wrcoef2(a,c。

10、,s,wname,2); h2=wrcoef2(h,c,s,wname,2); v2=wrcoef2(v,c,s,wname,2); d2=wrcoef2(d,c,s,wname,2,figure; subplot(2,2,1);a1=abs(a1);a1=imadjust(a1,stretchlim(a1),0,1);imshow(a1); title(approximation a1) subplot(2,2,2);h1=abs(h1);h1=imadjust(h1,stretchlim(h1),0,1);imshow(h1); title(horizontal detail h1) su。

11、bplot(2,2,3);v1=abs(v1);v1=imadjust(v1,stretchlim(v1),0,1);imshow(v1); title(vertical detail v1) subplot(2,2,4);d1=abs(d1);d1=imadjust(d1,stretchlim(d1),0,1);imshow(d1); title(diagonal detail d1) figure; subplot(2,2,1);a2=abs(a2);a2=imadjust(a2,stretchlim(a2),0,1);imshow(a2); title(approximation a2)。

12、 subplot(2,2,2);h2=abs(h2);h2=imadjust(h2,stretchlim(h2),0,1);imshow(h2); title(horizontal detail h2) subplot(2,2,3);v2=abs(v2);v2=imadjust(v2,stretchlim(v2),0,1);imshow(v2); title(vertical detail v2) subplot(2,2,4);d2=abs(d2);d2=imadjust(d2,stretchlim(d2),0,1);imshow(d2); title(diagonal detail d2,u。

13、pcoef2由多层小波分解重构近似分量或细节分量 load woman; c,s=wavedec2(X,2,db4); siz=s(size(s,1),:); cal=appcoef2(c,s,db4,1); a1=upcoef2(a,cal,db4,1,siz); chd1=detcoef2(h,c,s,1); hd1=upcoef2(h,chd1,db4,1,siz); cvd1=detcoef2(v,c,s,1); vd1=upcoef2(h,cvd1,db4,1,siz); cdd1=detcoef2(d,c,s,1); dd1=upcoef2(d,cdd1,db4,1,siz); subplot(2,2,1),imshow(a1,) title(重构近似信号); subplot(2,2,2),imshow(hd1,) title(重构水平细节信号); subplot(2,2,3),imshow(vd1,) title(重构垂直细节信号); subplot(2,2,4),imshow(dd1,) title(重构对角细节信号。

f1=50; % 频率1 f2=100; % 频率2 fs=2*(f1+f2); % 采样频率 Ts=1/fs; % 采样间隔 N=120; % 采样点数 n=1:N; y=sin(2*pi*f1*n*Ts)+sin(2*pi*f2*n*Ts); % 正弦波混合 figure(1) plot(y); title('两个正弦信号') figure(2) stem(abs(fft(y))); title('两信号频谱') %% 2.小波滤波器谱分析 h=wfilters('db30','l'); % 低通 g=wfilters('db30','h'); % 高通 h=[h,zeros(1,N-length(h))]; % 补零(圆周卷积,且增大分辨率变于观察) g=[g,zeros(1,N-length(g))]; % 补零(圆周卷积,且增大分辨率变于观察) figure(3); stem(abs(fft(h))); title('低通滤波器图'); figure(4); stem(abs(fft(g))); title('高通滤波器图') %% 3.MALLET分解算法(圆周卷积的快速傅里叶变换实现) sig1=ifft(fft(y).*fft(h)); % 低通(低频分量) sig2=ifft(fft(y).*fft(g)); % 高通(高频分量) figure(5); % 信号图 subplot(2,1,1) plot(real(sig1)); title('分解信号1') subplot(2,1,2) plot(real(sig2)); title('分解信号2') figure(6); % 频谱图 subplot(2,1,1) stem(abs(fft(sig1))); title('分解信号1频谱') subplot(2,1,2) stem(abs(fft(sig2))); title('分解信号2频谱') %% 4.MALLET重构算法 sig1=dyaddown(sig1); % 2抽取 sig2=dyaddown(sig2); % 2抽取 sig1=dyadup(sig1); % 2插值 sig2=dyadup(sig2); % 2插值 sig1=sig1(1,[1:N]); % 去掉最后一个零 sig2=sig2(1,[1:N]); % 去掉最后一个零 hr=h(end:-1:1); % 重构低通 gr=g(end:-1:1); % 重构高通 hr=circshift(hr',1)'; % 位置调整圆周右移一位 gr=circshift(gr',1)'; % 位置调整圆周右移一位 sig1=ifft(fft(hr).*fft(sig1)); % 低频 sig2=ifft(fft(gr).*fft(sig2)); % 高频 sig=sig1+sig2; % 源信号 %% 5.比较 figure(7); subplot(2,1,1) plot(real(sig1)); title('重构低频信号'); subplot(2,1,2) plot(real(sig2)); title('重构高频信号'); figure(8); subplot(2,1,1) stem(abs(fft(sig1))); title('重构低频信号频谱'); subplot(2,1,2) stem(abs(fft(sig2))); title('重构高频信号频谱'); figure(9) plot(real(sig),'r','linewidth',2); hold on; plot(y); legend('重构信号','原始信号') title('重构信号与原始信号比较') f1=50; % 频率1 f2=100; % 频率2 fs=2*(f1+f2); % 采样频率 Ts=1/fs; % 采样间隔 N=120; % 采样点数 n=1:N; y=sin(2*pi*f1*n*Ts)+sin(2*pi*f2*n*Ts); % 正弦波混合 figure(1) plot(y); title('两个正弦信号') figure(2) stem(abs(fft(y))); title('两信号频谱') %% 2.小波滤波器谱分析 h=wfilters('db30','l'); % 低通 g=wfilters('db30','h'); % 高通 h=[h,zeros(1,N-length(h))]; % 补零(圆周卷积,且增大分辨率变于观察) g=[g,zeros(1,N-length(g))]; % 补零(圆周卷积,且增大分辨率变于观察) figure(3); stem(abs(fft(h))); title('低通滤波器图'); figure(4); stem(abs(fft(g))); title('高通滤波器图') %% 3.MALLET分解算法(圆周卷积的快速傅里叶变换实现) sig1=ifft(fft(y).*fft(h)); % 低通(低频分量) sig2=ifft(fft(y).*fft(g)); % 高通(高频分量) figure(5); % 信号图 subplot(2,1,1) plot(real(sig1)); title('分解信号1') subplot(2,1,2) plot(real(sig2)); title('分解信号2') figure(6); % 频谱图 subplot(2,1,1) stem(abs(fft(sig1))); title('分解信号1频谱') subplot(2,1,2) stem(abs(fft(sig2))); title('分解信号2频谱') %% 4.MALLET重构算法 sig1=dyaddown(sig1); % 2抽取 sig2=dyaddown(sig2); % 2抽取 sig1=dyadup(sig1); % 2插值 sig2=dyadup(sig2); % 2插值 sig1=sig1(1,[1:N]); % 去掉最后一个零 sig2=sig2(1,[1:N]); % 去掉最后一个零 hr=h(end:-1:1); % 重构低通 gr=g(end:-1:1); % 重构高通 hr=circshift(hr',1)'; % 位置调整圆周右移一位 gr=circshift(gr',1)'; % 位置调整圆周右移一位 sig1=ifft(fft(hr).*fft(sig1)); % 低频 sig2=ifft(fft(gr).*fft(sig2)); % 高频 sig=sig1+sig2; % 源信号 %% 5.比较 figure(7); subplot(2,1,1) plot(real(sig1)); title('重构低频信号'); subplot(2,1,2) plot(real(sig2)); title('重构高频信号'); figure(8); subplot(2,1,1) stem(abs(fft(sig1))); title('重构低频信号频谱'); subplot(2,1,2) stem(abs(fft(sig2))); title('重构高频信号频谱'); figure(9) plot(real(sig),'r','linewidth',2); hold on; plot(y); legend('重构信号','原始信号') title('重构信号与原始信号比较')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值