积分规则 网站地图 帮助中心    
嵌入式软件 单 片 机 DSP 存储器 传感控制 光电显示
嵌入式硬件 CPLD/FPGA SOPC AD/DA 接口电路 模拟设计
I C设计 通信产品 汽车电子 电源产品 消费电子 数控系统
工业控制 军工/航天 安防产品 医疗电子 计算机外设 测试测量
供应 I C
求购 公司库

  IC 求购 销售 公司 论文 DATASHEET 参考设计 论坛
当前位置: 电子技术 >> DSP >> 算法
  相关分类: 应用论文 | TI DSP | 新产品 | 算法 | 下载 | DSP代码示例 | ADI DSP | freescale DSP |
数字信号处理应用中的数值逼近方法概述
 
作者:Don Morgan   来源:本站原创    点击数:454   更新时间:2007-12-14
您可以添加到网摘 让更多人关注此文章:

    未知数据是工程设计中常用的一种设计方法。许多方法可以保证推测足够精确,并较好地应用于实际设备,内插法预测法外推法逼近法就是其中的几种。本文的主要内容将帮助设计工程师了解如何根据现有信息,创建和逼近新的数据。

在数字信号处理过程中,经常要采用逼近法,内插法就是一种常用的数值逼近法。内插法通常定义为根据二个已知值估计出中间值,例如一个函数或序列,其中最常见的形式是线性内插法。线性内插法在二个已知数据点间画一条直线,新的数据点就位于这条直线上,具体位置要根据其值与二个端点之一的接近程度确定。

在以下方程中:

值f(a)和f(b)是x=a和x=b时的已知数据点。

假设在某一特定应用中需要解出指数函数exp(x)的不同值。就像嵌入式系统遇到的情况那样,我们通常没有足够的内存或处理器速度。表1给出的是覆盖了非常小的插值间隔的所有已知值。

如果要解出exp(3.8)的值,那么线性内插法将按以下方式运行:



从图1可以看到,尽管内插器是线性的,但函数f(x)却不是一条直线。因此除了端点外,我们所选用的所有值都不能精确地代表函数。根据所要的精度、可用数据点数量及其间距,这可能不是什么问题;但如果函数值在数据点之间波动,并且所希望的精度要求这样,那么我们就需要一个更大些的表格。

例如采用线性内插法的频率综合,它往往需要很大的波表(wave table)才能获得无假频的清晰声音。在数据带宽不受限的情况下,表格的分辨率越大,你的内插器就越精确,但由于受实际内存空间的限制,并不是所有应用都能提供如此大的表格,因此怎样才能增加精度而又保证表格不至于太大呢?其实有许多解决方案,拉格郎日内插法就是其中之一。

拉格郎日内插器

拉格郎日内插器能将数据拟合为多项式。根据Weierstrass定理,如果x0,x1...,xn互不相关,那么对于y0,y1...,yn就存在唯一的小于等于n次的多项式:

我们可以利用该方程得到通过第n+1个数据点的n次多项式。由此看来,我们可以认为真正的多项式是:



此时每个数据点都作为一项。这时的编码就特别容易,因为所有点可以分解到:



需要解释一下这一步运算的核心:



假设为xi=xj外的所有取样点都定义了一个多项式或函数f(xi)=0并把它写下来:



然后写出只用于非零点的方程:



那么我们就可以用方程8对方程7作归一化处理来得到方程5。

为了进一步演示其工作机理,我们采用了与上述线性内插法案例相同的指数函数和数据点(来自表1),结果却大不相同。拉格郎日内插器的结果是44.677,线性内插器的结果是47.6956,而这些结果基于的都是同一信息。事实上拉格郎日内插器需要更多的运算,后面我们会进一步解释,首先让我们看一下实现方法。

为了说明实现的简易性,这里提供一个用C语言编写的函数:


===================================


s = 0;


for (i= 0; i <= m; i++)


{


z = 1.0;


for (j=0; j<=n; j++


{


if (i!=j)z=z*(T-x[j])/(x[i]-x[j]);


}


s = s + z * f[i];


}


==================================


为了提高速度,我们可以预先算出方程2的中间值来减少内插器所需的运算量。由于这些值都可以预先知道,因此可以把它们存储在一个替代yi表格的表格中。这时我们只需要把每个值与相应的gi(x)相乘就可以了,这一过程在8051上运行基本没有问题。图1:内插器是线性的,但函数f(x)却不是一条直线。

该算法用只有10条记录的表格就能获得线性内插法用1,000条记录的表格才能达到的精度,利用预先算出的已知条件还可以达到较快的速度。对于输出必须适配预定数据点集的嵌入式系统来说,这种算法能极大地减轻运算的复杂性。

切比雪夫函数

包括拉格郎日在内的许多内插器在待拟合数据的中段都很有效,但接近端点时性能就会恶化。如果能按一定阶数切比雪夫多项式零点控制下的间隔重新取样,我们就能从容地修正插值间隔上的误差,这样做听起来有点复杂,但只要简单地作下修改,我们就可以得到与拉格郎日算法具有相同速度和效率的算法,而且具有更好的兼容性和可靠性。

切比雪夫函数值围绕零点上下波动,波动间隔范围是-1到1。有趣的是,这类函数的频率在间隔端点处会有所提高。因此若要采用符合插值间隔的切比雪夫多项式零点进行采样,在间隔端点上的采样数必须超过间隔中间的采样数。这样才能弥补用等距方法采样时端点处精度的不足。

这并不意味整个内插间隔上的结果会有更高的精度,但它确实会将任何错误分散到整个间隔上。换句话说,在间隔端点上获得的结果有望具有与中心点相同的可靠性。

那么是如何做到这一点的呢?首先需要决定插值的间隔范围。在上面所用例子中,间隔范围是0到9,然后我们就给它配备一个切比雪夫多项式;如果配备的是拉格郎日算法,那么其阶数要大于拉格郎日多项式。在本例中,拉格郎日多项式的阶数是9,因此切比雪夫多项式的阶数是10。下面的方程用来选取采样点:

在该方程中,a是间隔的起点,b是间隔的终点,c是所需多项式的阶数。表2给出了新的切比雪夫取样点。



此时的算法就能在插值间隔的任何地方产生有用结果,而且速度相当快,所占存储器空间也比较少。

结论

由于多项式阶数取决于表格的长度,即使有预先计算的部分,但当所需精确数字数量较多时还是需要非常复杂的运算。每个新值都必须从头计算,因为前面估测的结果中根本没有可利用的部分。拉格郎日多项式误差的计算也比较困难,即使对切比雪夫来说也不是件轻易的事。



相关文章
没有相关文章
热门评论排行
·VHDL设计中电路简化问题的
·ARM嵌入式系统基础教程(N
·江苏嵌入式Linux教育培训
·ARM处理器应用开发4步骤
·锐极LINUX驱动培训班定于

文章评论
    没有任何评论
*只显示最新10条评论。评论内容只代表网友观点,与本站立场无关。更多评论
发表评论
  * 请先[登陆]再进行评论,谢谢。
评分: 1分 2分 3分 4分 5分
内容: *
发帖须知:
一.所发文章必须遵守《互联网电子公告服务管理规定》;
二.严禁发布供求代理信息,公司介绍,产品信息等广告宣传信息;
三.严禁恶意重复发帖;
四.严禁对个人,实体,民族,国家等进行漫骂,污蔑,诽谤。
 
热点新闻 [更多]
 
新兴半导体技术催生绿色节能的大学校园
电子系统创新促进汽车走向环保与节能
意法CEO携新品巡游中国 
未来3年新余需要8万光伏产业人才
看好中国未来发展:瑞萨提升在华芯片产
中国LED发展神速将成为未来照明产业
剖析联发科技2009年五大产品策略
突破四大障碍 蓝牙立体声耳
瑞萨向德国企业出售当地半导体前工序工
产业紧缩 PCB业或将提前
 
热门下载 [更多]
 
[ PCB设计] Protel99教程下载
[ ] 手把手学单片机20个例
[ ] 单片机做的智能台灯
[ ] 单片机入门书
[ ] linux系统移植开发文档
[ ] IC卡的读写程序
[ ] 8051单片机C语言彻底应用
[ 常用软件] 555定时器电路设计软件V1.2
[ 常用软件] 51定时器计算软件
[ ] ARM处理器应用开发4步骤
 
论坛新帖 [更多]
 
[转]教你如何进行电磁兼容设计...
[转]汽车和专业音响原厂设计原...
诺基亚,三星手机原厂图纸和PC...
电子元器件可靠性和失效分析经典...
[建议]FPGA设计技巧与实例...
Xilinx FPGA设计快速...
基于CPLD的各种设计实例和分...
教你如何学会MSP430单片机...
凌阳单片机教程(共8章)非常详...
[建议]学习PIC系列单片机的...

 
赞助商 [更多]
 

ICP许可证号:[粤 05056597]
联系电话:010-82517432 82517615 传真: 010-82517615

版权所有 Copyright © 2006 嵌入式技术网