资源简介
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
- 上一篇:基于MATLAB的地震正演模型实现245287
- 下一篇:小波变换去除基线漂移
评论
共有 条评论