最开始学习正交原理是从实数学习的,当时觉得实数已经很好了,为什么要学习复杂的复数推导过程呢,随着慢慢的深入,发现复数才是更加通用的。这里就把学习中的推导笔记发上来,方便自己复习,也可以对其它正在学习这方面的朋友有所帮助。

  这里有一个长度为M的滤波器,对于输入序列u(n),n=0,1,2...,滤波器的输出y(n)表示为

 

y(n)=k=0M1wku(nk)n=0,1,2...y(n)=∑k=0M−1wk∗u(n−k)n=0,1,2...

 

  这里y(n)是期望响应d(n)的一个估计值,则估计误差e(n)为

 

e(n)=d(n)y(n)e(n)=d(n)−y(n)

 

  为了优化滤波器的设计,我们使用均方误差做为代价函数。表示为

 

J=E[e(n)e(n)]=E[|e(n)|2]J=E[e(n)e∗(n)]=E[|e(n)|2]

 

  对于复数的输入,滤波器的系数也是复数,这里只把滤波器的第k个系数做复数展开

 

wk=ak+jbkk=0,1,2,...wk=ak+jbkk=0,1,2,...

 

  则代价函数J关于滤波器系数w向量的梯度向量的第k个元素为

 

ΔkJ=Jak+jJbkk=0,1,2,...ΔkJ=∂J∂ak+j∂J∂bkk=0,1,2,...

 

  展开可以得到:

 

ΔkJ=Jak+jJbk=E[e(n)ake(n)+e(n)bkje(n)+e(n)ake(n)+e(n)bkje(n)]e(n)ak=[d(n)k=0M1wku(nk)]ak=[d(n)k=0M1(akjbk)u(nk)]ak=u(nk)e(n)bk=[d(n)k=0M1wku(nk)]bk=[d(n)k=0M1(akjbk)u(nk)]bk=ju(nk)e(n)ak=[d(n)k=0M1wku(nk)]ak=[d(n)k=0M1(ak+jbk)u(nk)]ak=u(nk)e(n)bk=[d(n)k=0M1wku(nk)]bk=[d(n)k=0M1(ak+jbk)u(nk)]bk=ju(nk)ΔkJ=∂J∂ak+j∂J∂bk=E[∂e(n)∂ake∗(n)+∂e(n)∂bkje∗(n)+∂e∗(n)∂ake(n)+∂e∗(n)∂bkje(n)]∂e(n)∂ak=∂[d(n)−∑k=0M−1wk∗u(n−k)]∂ak=∂[d(n)−∑k=0M−1(ak−jbk)u(n−k)]∂ak=−u(n−k)∂e(n)∂bk=∂[d(n)−∑k=0M−1wk∗u(n−k)]∂bk=∂[d(n)−∑k=0M−1(ak−jbk)u(n−k)]∂bk=ju(n−k)∂e∗(n)∂ak=∂[d∗(n)−∑k=0M−1wku∗(n−k)]∂ak=∂[d∗(n)−∑k=0M−1(ak+jbk)u∗(n−k)]∂ak=−u∗(n−k)∂e∗(n)∂bk=∂[d∗(n)−∑k=0M−1wku∗(n−k)]∂bk=∂[d∗(n)−∑k=0M−1(ak+jbk)u∗(n−k)]∂bk=−ju∗(n−k)

 

  将上面的4个偏微分代入梯度向量的第k个元素,整理可得

 

ΔkJ=E[u(nk)e(n)+ju(nk)je(n)u(nk)e(n)ju(nk)je(n)]=E[u(nk)e(n)u(nk)e(n)u(nk)e(n)+u(nk)e(n)]=2E[u(nk)e(n)]ΔkJ=E[−u(n−k)e∗(n)+ju(n−k)je∗(n)−u∗(n−k)e(n)−ju∗(n−k)je(n)]=E[−u(n−k)e∗(n)−u(n−k)e∗(n)−u∗(n−k)e(n)+u∗(n−k)e(n)]=−2E[u(n−k)e∗(n)]

 

  当梯度等于0,就是滤波器均方误差最小(最优)的条件,这个条件可以表示为

 

E[u(nk)e(n)]=0k=0,1,2,...E[u(n−k)e∗(n)]=0k=0,1,2,...

 

  这就是正交原理的数学描述,它的意思是:当估计误差与输入数据正交时,滤波器工作于均方误差准则下的最优状态。