dbN小波构造与求解实例分析-附Matlab代码

摘要

本博文深入分析了dbN小波构造的原理,并附上了相应的Matlab代码,以及一个具体的实例演示来求解dbN滤波器。

一、dbN小波构造原理

dbN 小波的构造过程如下:

1 ◯ \textcircled{1} 1 输入 N . N. N.

② ② 计算 P ( y ) = P N ( y ) = ∑ k = 0 N − 1 ( N − 1 + k k ) y k , y = sin ⁡ 2 ω 2 P(y)=P_N(y)=\sum_{k=0}^{N-1}\binom{N-1+k}ky^k,y=\sin^2\frac\omega2 P(y)=PN(y)=k=0N1(kN1+k)yk,y=sin22ω,开方运算需要将其转换为复

指数形式:

L . ( ω ) = ∑ k = 0 N − 1 ( N − 1 + k k ) ( sin ⁡ 2 ω 2 ) k = ∑ k = 0 N − 1 ( N − 1 + k k ) ( 1 − cos ⁡ ω 2 ) k = ∑ k = 0 N − 1 ( N − 1 + k k ) ( 1 − e i ω + e − i ω 2 2 ) k \begin{aligned}L.(\omega)&=\sum_{k=0}^{N-1}\binom{N-1+k}k\biggl(\sin^2\frac\omega2\biggr)^k\\&=\sum_{k=0}^{N-1}\binom{N-1+k}k\biggl(\frac{1-\cos\omega}2\biggr)^k\\&=\sum_{k=0}^{N-1}\binom{N-1+k}k\biggl(\frac{1-\frac{\mathrm{e}^{\mathrm{i}\omega}+\mathrm{e}^{-\mathrm{i}\omega}}2}2\biggr)^k\\&\end{aligned} L.(ω)=k=0N1(kN1+k)(sin22ω)k=k=0N1(kN1+k)(21cosω)k=k=0N1(kN1+k)(212eiω+eiω)k = ∑ k = 0 N − 1 a k =\sum_{k= 0}^{N- 1}a_k =k=0N1ak ( e i n + e − i n − 2 ) k (\mathrm{e}^{in}+ \mathrm{e} ^{- in}- 2)^k (ein+ein2)k

= ∑ k = 0 N − 1 a k ( e i 2 n − 2   e i n + 1 ) k =\sum_{k=0}^{N-1}a_k\left(\mathrm{e}^{i2n}-2\mathrm{~e}^{in}+1\right)^k =k=0N1ak(ei2n2 ein+1)k

式中, a k = ( − 1 ) t ( N − 1 + k k ) 2 2 k = ( N − 1 + k ) ! 2 2 k k ! ( N − 1 ) ! a_k=(-1)^{t}\frac{\binom{N-1+k}k}{2^{2k}}=\frac{(N-1+k)!}{2^{2k}k!(N-1)!} ak=(1)t22k(kN1+k)=22kk!(N1)!(N1+k)!,于是 a k = ( − 1 ) a k − 1 1 4 ( N − 1 + k k ) a_k=(-1)a_{k-1}\frac14\left(\frac{N-1+k}k\right) ak=(1)ak141(kN1+k)

③ 令 Z = e i ω , L ( ω ) Z=\mathrm{e}^{i\omega},L_{\mathcal{}}(\omega) Z=e,L(ω)展开成 Z Z Z的多项式,求出多项式的根。由 Riesz 引理,可以通过对根的排序,选择一半根进行多项式重构,如此可以完成开方运算,即计算得到 l ( ω ) l(\omega) l(ω)

4 ◯ \textcircled{4} 4求解 H ( ω ) = ( 1 + e − i ω 2 ) N l ( ω ) H(\omega)=\left(\frac1+\mathrm{e}^{-i\omega}2\right)^Nl(\omega) H(ω)=(+1e2)Nl(ω)

5 ◯ \textcircled{5} 5对应系数,得到低通滤波器 { h k } k ∘ \{h_k\}_k\circ {hk}k

二、求解dbN滤波器实例

function  hn=dbfilter(N)
%输入初值DbN的消失矩N,滤波器的长度为2N
a = 1;p = 1;q = 1;
hn=[1,1];
for k=1:N-1
    hn = conv(hn,[1,1]);%卷积得到二项式系数,即描述(1+e^(-iw))^k的展开系数
    a = -a*0.25*( N -1 + k)/k;%计算a(k)
    p = conv(p,[1,-2,1]);%卷积得到三项式系数,即描述(e^(iw) +e^(-iw)-2)^k
    q = [0 q 0]+a*p;%q表示求和运算,计算整个L(w)的系数分布
end
%求出L(w)的多项式的根,并排序
Q_root = sort(roots(q)) ;
%求出以L(w)的前N-1个根构成的多项式,real是实部,t的长度为N
t = real(poly(Q_root(1:N-1)));
%完成H(w)= (1+e^(-iw))^N* l(w),hn为前面循环中卷积到N得到的hn,t相当于l(w) 
hn = conv(hn,t) ;
%归一化,保证hn的求和为sqrt(2)
hn = hn*sqrt(2)/sum(hn) ;

% function hn=dbfilter(n2)
% a = 1;p = 1;q = 1;
% hn=[1,1];
% for j=1:n2-1
%     hn = conv(hn,[1,1])%二项式系数=nchoosek
%     a = -a*0.25*(j+n2-1)/j%数值
%     p = conv(p,[1,-2,1])%length(p)+3-1,2k平方项
%     q = [0 q 0]+a*p%q的长度和p相同,与上一个q差头尾两个元素
% end
% 
% qq = sort(roots(q))%求出多项式的根,并排序,相当于L(w)
% %此处t相当于l(w)
% t = real(poly(qq(1:n2-1)))%求出以q的前n2-1个根构成的多项式,real是实部,t的长度为n2
% %(1+e^(-iw))^N相当于前面卷积后的hn,t相当于l(w)
% hn = conv(hn,t)%二项式系数与t的卷积,n2+1,卷上n2长度的(n2+1)+(n2)-1
% hn = hn*sqrt(2)/sum(hn)%保证hn的求和为sqrt(2)

在命令窗口输入一下命令,直接运行子程序,即可获得滤波器:

>> hn=dbfilter(5)

hn =

    0.1601    0.6038    0.7243    0.1384   -0.2423   -0.0322    0.0776   -0.0062   -0.0126    0.0033
 

三、Matlab程序获取与开发

本博文演示结果均由Matlab代码实现,可私信博主获取,博主联系方式在文章最底部。


博主简介:擅长智能优化算法信号处理图像处理机器视觉深度学习神经网络等领域Matlab仿真以及实验数据分析等,matlab代码问题、商业合作、课题选题与指导等均可私信交流


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超级学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值