我想用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
我的错误是什么?
感谢
答案 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。您可以简单地乘以以下公式来规范化结果:
您的结果现在应该是:
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]