📄 mydwt.m
字号:
function [cA,cD] = mydwt(x,lpd,hpd,dim);
% 函数 [cA,cD]=MYDWT(X,LPD,HPD,DIM) 对输入序列x进行一维离散小波分解,输出分解序列[cA,cD]
% 输入参数:x——输入序列;
% lpd——低通滤波器;
% hpd——高通滤波器;
% dim——小波分解层数。
% 输出参数:cA——平均部分的小波分解系数;
% cD——细节部分的小波分解系数。
cA=x; % 初始化cA,cD
cD=[];
for i=1:dim
cvl=conv(cA,lpd); % 低通滤波,为了提高运行速度,调用MATLAB提供的卷积函数conv()
dnl=downspl(cvl); % 通过下抽样求出平均部分的分解系数
cvh=conv(cA,hpd); % 高通滤波
dnh=downspl(cvh); % 通过下抽样求出本层分解后的细节部分系数
cA=dnl; % 下抽样后的平均部分系数进入下一层分解
cD=[cD,dnh]; % 将本层分解所得的细节部分系数存入序列cD
end
% 以下部分是信号去噪的测试程序,与上述函数无关
% if sym
% if i<=dim-3
% dnh=averlize(dnh,1);
% else if i<=dim-1
% dnh=averlize(dnh,2);
% end
% end
% end
% function y=averlize(x,fa);
% N=length(x);
% % aver=sum(x(1:N))/N;
% for i=2:N
% if abs(x(i)-x(i-1))>=0.7
% switch fa
% case 1
% x(i)=x(i-1);
% case 2
% x(i)=x(i-1);
% otherwise
% x(i)=x(i);
% end
% end
% end
% y=x;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -