⭕⭕ 目 录 ⭕⭕
- 摘要
- 一、dbN小波构造原理
- 二、求解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=0N−1(kN−1+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=0∑N−1(kN−1+k)(sin22ω)k=k=0∑N−1(kN−1+k)(21−cosω)k=k=0∑N−1(kN−1+k)(21−2eiω+e−iω)k = ∑ k = 0 N − 1 a k =\sum_{k= 0}^{N- 1}a_k =∑k=0N−1ak ( e i n + e − i n − 2 ) k (\mathrm{e}^{in}+ \mathrm{e} ^{- in}- 2)^k (ein+e−in−2)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=0∑N−1ak(ei2n−2 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(kN−1+k)=22kk!(N−1)!(N−1+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)ak−141(kN−1+k)。
③ 令 Z = e i ω , L ( ω ) Z=\mathrm{e}^{i\omega},L_{\mathcal{}}(\omega) Z=eiω,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(ω)=(+1e−iω2)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-1hn = 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)^kq = [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代码问题、商业合作、课题选题与指导等均可私信交流。