×

DSP的常见算法应该如何实现

消耗积分:0 | 格式:rar | 大小:0.11 MB | 2020-08-10

分享资料个

  常见的算法实现

  在实际应用中虽然信号处理的方式多种多样, 但其算法的基本要素却大多相同, 在本节中介绍几种较为典型的算法实现,希望通过对这些例子(单精度, 16bit)的分析,能够让大家熟悉DSP 编程中的一些技巧,在以后的工作中可以借鉴,达到举一反三的效果。

  1. 函数的产生

  在高级语言的编程中, 如果要使用诸如正弦、余弦、对数等数学函数, 都可以直接调用运行库中的函数来实现, 而在DSP 编程中操作就不会这样简单了。虽然TI 公司提供的实时运行库中有一些数学函数, 但它们所耗费的时间大多太长, 而且对于大多数定点程序使用双精度浮点数的返回结果有点“大材小用” 的感觉, 因此需要编程人员根据自身的要求“定制”数学函数。实现数学函数的方法主要有查表法、迭代法和级数逼近法等, 它们各有特点, 适合于不同的应用。

  查表法是最直接的一种方法, 程序员可以根据运算的需要预先计算好所有可能出现的函数值, 将这些结果编排成数据表, 在使用时只需要根据输入查出表中对应的函数值即可。它特点是速度快, 但需要占用大量的存储空间, 且灵活度低。当然, 可以对上述查表法作些变通, 仅仅将一些关键的函数值放置在表中, 对任意一个输入, 可根据和它最接近的数据采用插值方法来求得。这样占用的存储空间有所节约,但数值的准确度有所下降。

  迭代法是一种非常有用的方法, 在自适应信号处理中发挥着重要的作用。作为函数产生的一种方法, 它利用了自变量取值临近的函数值之间存在的关系, 如时间序列分析中的AR、MA 、ARMA 等模型,刻画出了信号内部的特征。因为它只需要存储信号模型的参量和相关的状态变量, 所以所占用的存储空间相对较少, 运算时间也较短。但它存在一个致命的弱点,由于新的数值的产生利用了之前的函数值, 所以它容易产生误差累积, 适合精度要求不高的场合。

  级数逼近法是用级数的方法在某一自变量取值范围内去逼近数学函数, 而将自变量取值在此范围外的函数值利用一些数学关系, 用该范围内的数值来表示。这种方法最大的优点是灵活度高, 且不存在误差累积, 数值精度由程序员完全控制。该方法的关键在于选择一个合适的自变量取值区间和寻找相应的系数。

  下面通过正弦函数的实现,具体对上述三种方法作比较。

  查表法较简单, 只需要自制一张数据表, 也可以利用C5400 DSP ROM 内的正弦函数表。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !