寂寞的部落 发表于 2014-12-22 11:46

根据小波变化的原理自己编写的的程序。

%% 采用小波变换原理进行小波变换(滤波器系数矩阵第一行长度始终是2)
clear;
clc
y=
T=10; % 信号长度
n=1:T;
%% 选用db2
wavelet='db2';
= wfilters(wavelet);
%% 1.离散序列小波变换的矩阵分解表示
   h0=Lo_D(end:-1:1);%形成低通滤波器系数矩阵
   h1=Hi_D(end:-1:1);%形成高通滤波器系数矩阵
   H00=zeros(13,16);
   H10=zeros(13,16);
   for i=1:13
          H00(i,i:i+3)=h0;
      end
            for i=1:13
          H10(i,i:i+3)=h1;
            end
%第零层到第一层分解
H01=H00(2:2:end,4:13);%对系数矩阵行列分别进行删除
H11=H10(2:2:end,4:13);
a1=H01*y';%第一层近似系数
d1=H11*y';%第一层细节系数
%第一层到第二层分解
H02=H01(1:4,1:6);%对系数矩阵行列分别进行删除(4*6 )
H12=H11(1:4,1:6);
a2=H02*a1;%第二层近似系数
d2=H12*a1;%第二层细节系数
%第二层到第三层分解
H03=H01(1:3,1:4);%对系数矩阵行列分别进行删除
H13=H11(1:3,1:4);
a3=H03*a2;%第三层近似系数
d3=H13*a2;%第三层细节系数
%% 1.离散序列小波变换的矩阵重构表示
%用第一层系数进行重构(第零层到第一层分解滤波器系数矩阵的转置)
G01=H01';
G11=H11';
x00=G01*a1;
y01=G11*d1;
y1=x00'+y01'

%% 用第二层系数进行重构
%第二层系数重构第一层系数
G02=H02';
G12=H12';
a11=G02*a2;
d11=G12*d2;
a1=a11+d11;
%第一层系数重构第零层系数(原始信号)
G01=H01';
G11=H11';
x02=G01*a1;
y02=G11*d1;
y2= x02'+y02'
% %
%% 第二层重构第零层(原始信号)
   g0=Lo_R(end:-1:1);%形成低通滤波器系数矩阵
   g1=Hi_R(end:-1:1);%形成高通滤波器系数矩阵
   G11=H11';
   G01=H01';
   G02=H02';
   G12=H12';
%    G12=G11(:,2:2:end);
%   G12=
%    G02=G01(:,2:2:end);
%   G02=
% z01=G02*a2+G12*d2
% z11=G11*d1
x01=G01*G02*a2+G01*G12*d2+G11*d1
Q=
Confi=
D=cond(Confi); %求矩阵Gck的条件数
s=Q* Confi

HHT 发表于 2014-12-27 21:24

给力, 学习
页: [1]
查看完整版本: 根据小波变化的原理自己编写的的程序。