TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320C6678: DSPF_sp_maxidx使用遇到的问题,求达者解惑

Part Number:TMS320C6678

在使用库函数DSPF_sp_maxidx时,遇到函数的返回值并不是第一个最大值的索引,因为收入数组里可能存在几个相等的最大值,但该函数返回的并不是第一个的位置,有时可能是中间的那一个的位置(存在三个相等的最大值的情况下)。源代码见附图,谢谢了!

man lingbin:

WIN10 CCS9.3和最新版的processorSDK

,

man lingbin:

补充一点,在DSPF_sp_maxidx函数下面加了一条语句:int itemp = DSPF_sp_maxidx_cn(fdst,res);返回的结果就是第一个最大值的索引位置,而DSPF_sp_maxidx(fdst,res);返回的仍然是最大值的第二个位置,这两个位置上的值也的确是相等的,实在是想不明白是什么原因导致的,求曾经遇到过这个问题的同侪交流解惑,谢谢!

,

man lingbin:

问题找到了,库函数存在bug。使用dsplib提供的源文件DSPF_sp_maxidx.c中的代码编译后进行单步调试,发现存在最大值相等的情况下,库函数则只返回idx1的值,但实际上idx3的值可能更小。库函数的算法不难理解,相当于把输入数组分成四列,每一列求最大值并记录该最大值的位置,得到四个最大值再进行比较求出最后的最大值,然后返回最后这个最大值的索引位置。但当一个输入数组中存在几个相等的最大值时,且这几个最大值又恰好分别处在不同的列中,最后函数返回的索引位置则只是第一列中的最大值的位置,但这个最大值在数组中的位置则可能是第一个,也可能是第二个、第三个或者第四个,这种结果的不确定性,我觉得应该算是一个bug吧。请版主审核。

,

Nancy Wang:

我会在确认之后给您回复,感谢分享!

赞(0)
未经允许不得转载:TI中文支持网 » TMS320C6678: DSPF_sp_maxidx使用遇到的问题,求达者解惑
分享到: 更多 (0)