递归 DCT 实现

信息处理 转换 dct lms
2022-01-28 19:59:05

我试图根据下图了解输入信号(用于 LMS 滤波)上 DCT 的递归实现。

图片和公式取自论文:“Adaptive Inverse Control: A Signal Processing Approach”,作者 Bernard Widrow 和 Eugene Walach

DCT结构框图: 在此处输入图像描述

正态矩阵向量 DCT 公式 在此处输入图像描述

递归 DCT 公式:

在此处输入图像描述

困扰我的是,当递归公式使用信号时,这种递归 DCT 实现如何通过使用矩阵向量乘法产生与正常计算相同的结果xkn?

但另一方面,正常计算只使用高达xkn+1.

1个回答

可以将 DCT8 分解为交错输入的 DCT4 和 DST4 的组合。假设我们的输入是一个向量 {x0,x1,x2,x3,x4,x5,x6,x7}。然后让我们计算交错输入的 DCT4 和 DST4:

{y00,y10,y20,y30} = DCT4({x0,x2,x4,x6})
{y01,y11,y21,y31} = DCT4({x1,x3,x5,x7})
{z00,z10,z20,z30} = DST4({x0,x2,x4,x6})
{z01,z11,z21,z31} = DST4({x1,x3,x5,x7})

那么 DCT8 将是:

DCT8({x0,x1,x2,x3,x4,x5,x6,x7}) = {
  cos(pi/32)  *(y00 + y01) + sin(pi/32) *(z00 - z01)
  cos(3pi/32) *(y10 + y11) + sin(3pi/32)*(z10 - z11)
  cos(5pi/32) *(y20 + y21) + sin(5pi/32)*(z20 - z21)
  cos(7pi/32) *(y30 + y31) + sin(7pi/32)*(z30 - z31)
  cos(9pi/32) *(y40 + y41) + sin(9pi/32)*(z40 - z41)
  cos(11pi/32)*(y50 + y51) + sin(11pi/32)*(z50 - z51)
  cos(13pi/32)*(y60 + y61) + sin(13pi/32)*(z60 - z61)
  cos(15pi/32)*(y70 + y71) + sin(15pi/32)*(z70 - z71)
}

同样,您可以将任何 DCT N 分解为 DCT N/2 和 DST N/2 的组合。