• 大小: 2KB
    文件类型: .m
    金币: 2
    下载: 1 次
    发布日期: 2021-07-24
  • 语言: Matlab
  • 标签: MRA  

资源简介

matlab m文件编写的DB小波分解与重构算法,直接可运行,思路清晰。

资源截图

代码片段和文件信息

clc;
clear;
f1=30;f2=100; f3=50; 
fs=2*200; Ts=1/fs; 
N=121; 
n=1:N;
y=sin(2*pi*f1*n*Ts)+sin(2*pi*f2*n*Ts)+sin(2*pi*f3*n*Ts); 
%figure(1);
%plot(y);
%title(‘原始信号‘)
%%%2.小波滤波器谱分析
h=wfilters(‘db2‘‘l‘); % 低通
g=wfilters(‘db2‘‘h‘); % 高通
%%%MALLAT分解算法
%%第1次分解
h1=[hzeros(1N-length(h))]; % 补零(圆周卷积,且增大分辨率变于观察)
g1=[gzeros(1N-length(g))]; % 补零 
sig1=ifft(fft(y).*fft(h1)); % 低通(低频分量)
sig2=ifft(fft(y).*fft(g1)); % 高通
%hold on
%plot(y);
%plot(sig1‘r‘);
%plot(sig2‘k‘);
%%第2次分解
h2=dyadup(h); 
g2=dyadup(g); 
temph2=h2;
tempg2=g2;
lengrthh2=length(h2);
h2=h2(2:lengrthh2); % 去掉一个零
g2=g2(2:lengrthh2); % 去掉一个零
h2=[h2zeros(1N-length(h2))]; 
g2=[g2zeros(1N-length(g2))]; 
sig11=ifft(fft(sig1).*fft(h2)); % 低通
sig22=ifft(fft(sig1).*fft(g2)); % 高通
%%第3次分解
h3=dyadup(temph2); 
g3=dyadup(tempg2); 
lengrthh3=length(h3);
h3=h3(4:lengrthh3); % 去掉开始的3个零
g3=g3(4:lengrthh3); % 去掉开始的3个零
h3=[h3zeros(1N-length(h3))]; 
g3=[g3zeros(1N-length(g3))]; 
sig111=ifft(fft(sig11).*fft(h3)); % 低通
sig222=ifft(fft(sig11).*fft(g3)); % 高通
%hold on
%plot(y);
%plot(sig111‘r‘);
%plot(sig222

评论

共有 条评论