快速dct算法的错误结果

时间:2014-05-11 10:52:10

标签: performance vhdl dct

我想用VHDL实现Loeffler快速dct算法。在此之前,我检查了以下给定数据的算法结果:

x=[0 1 2 3 4 5 6 7]

然后我用这个算法计算了dct等价物,结果来了:

y=[28  -8.47  0  -4.6638  0  10.43  0  -5.966 ]

但matlab的重新开头就是这样:

  
    

Y = DCT(X)

  

y =

第1至6栏

9.8995   -6.4423         0   -0.6735         0   -0.2009

第7至8栏

     0   -0.0507

我的错误是什么?

感谢

2 个答案:

答案 0 :(得分:0)

我无法理解为什么Loeffler算法的结果与matlab结果不一样。

BTW,在此页面中:

http://calculator.vhex.net/post/calculator-result/discrete-cosine-transform

输入序列a: 我是啊 1 0 2 1 3 2 4 3 5 4 6 5 7 6 8 7 结果: 我
1 56 2 -25.769292 3 0 4 -2.693819 5 0 6 -0.803612 7 0 8 -0.202809

结果与matlab或Loeffler算法的任何结果都不匹配!!!

我真的很困惑。为什么每一个都有与其他人不匹配的结果。

答案 1 :(得分:0)

您的实施计算非标准化DCT-II。您可以简单地乘以以下公式来规范化结果:

1

您的结果现在应该是:

y = [9.899  -4.235  0  -2.316  0  5.215  0  -2.983]

肯定结果不等于matlab,你的Loeffler结果应该是这样的:

y = [28  -12.8846  0  -1.3469  0  -0.4018  0  -0.1014]

来源: https://help.scilab.org/doc/5.5.2/en_US/dct.html