今天编写逻辑代码实现某个DSP功能的时候,发现数据怎么样都跟MATLAB定点化后的数据比对不上。要看中间运算结果则是太繁杂,因为这段代码功能是实现80个输入数据和另外80个输入数据进行并行乘后再累加,用公式归纳如下:
Y = X0*conj(K0) + X1*conj(K1) ................... +X79*conj(K79)
其中,conj(*)为取输入数据Kn的共轭。这么简单的计算应该不会出错,查来查去始终不得要领。最终决定化繁为简,变成3个输入数和3个输入数的相乘,同时MATLAB代码也做此更改。由于本人的代码做了参数化配置功能,因此修改几个参数即可实现相同功能只是参与运算个数改变。化繁为简后,通过对6个复数数据和中间结果的逐个比对,发现是逻辑代码中K的虚部标号写错,一下子就定位出了原来80个相乘时一直找不到的问题。因此,有时候碰到这种多个数据共同运算出现错误时的定位最好是缩小运算数据数量,而缩小运算数据数量后运算的过程还是没有改变,但是非常方便于中间结果的比对,因而可以快速的定位错误。
文章评论(0条评论)
登录后参与讨论