需要帮助实施 DCT 类型 4 算法

信息处理 fft 算法 dct
2022-02-07 05:03:21

我正在尝试实现本文中的算法 2:

邵宣城和 Steven G. Johnson:减少算术运算次数的 Type-IV DCT、DST 和 MDCT 算法https://arxiv.org/pdf/0708.4399.pdf

它概述了一种通过 DCT 类型 3 和半尺寸 DST 类型 3 计算偶数尺寸 DCT 类型 4 的算法。

我已经做了一些尝试来实现这一点,但是要么论文有错误,要么我对这里发生的事情有严重的误解。

https://pastebin.com/uFiHsMKX这是我的 C++ 代码,它使用 FFTW 来计算内部转换,以及计算“预期输出”。除了 FFTW,编译所需的所有代码都在这个文件中。函数compute_dct4才是真正的处理——我尽量把变量命名为和论文中的一样,所以应该清楚代码中的内容与论文中的内容相对应。

我会很感激一些额外的眼睛,看看出了什么问题。谢谢!

1个回答

我找到了解决方案。纸上有一个错误。

在算法 2 的前 2 行:

w0 ← x0
vN/2 ← xN−1

x0 和 xN-1 应按 2 缩放,给出:

w0 ← x0 * 2
vN/2 ← xN−1 * 2

以下粘贴有工作代码(和开源许可证,请随意复制)

https://pastebin.com/TvgU4b6d