3224|0

2015

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

介绍非线性运算查表方法 [复制链接]

.查表法
       在实时DSP应用中实现非线性运算,一般都采取适当降低运算精度来提高程序的运算速度。查表法是快速实现非线性运算最常用的方法。采用这种方法必须根据自变量的范围和精度要求制作一张表格。显然输人的范围越大,精度要求越高,则所需的表格就越大,即存储量也越大。查表法求值所需的计算就是根据输入值确定表的地址,根据地址就可得到相应的值,因而运算量较小。查表法比较适合于非线性函数是周期函数或已知非线性函数输入值范围这两种情况、例1.12和例1. 13分别说明这两种情况。
       例1.12  已知正弦函数y=cos(x),制作一个512点表格,并说明查表方法。由于正弦函数是周期函数,函数值在-1至+1之间,用查表法比较合适。由于Q15的表示范围为1-至32767/32768之间,原则上讲-1至+1的范围必须用Q14表示。但一般从方便和总体精度考虑,类似情况仍用Q15表示,此时+1用32767来表示。
       (1)产生5l2点值的C语言程序如下所示。
#define N 512
#define pi 3.14l59
int sin_tab[5l2];
void  main()
{
int i;
for(i=0;i<N;i++)sin_tab=(int)(32767*sin(2*pi*i/N));
复制代码

       (2)查表
       查表实际上就是根据输人值确定表的地址。设输入x在0~2π之间,则x对应于512点表的地址为:index=(int)(512*x/2π),则y=sin(x)=sin_tab[index]如果x用Q12定点数表示,将512/2π用Q8表示为20861,则计算正弦表的地址的公式为。
index=(x*20861L)>>20;
复制代码

       例1.12用查表法求以2为底的对数,已知自变量值范围为0.5-1,要求将自变量范围均匀划分为10等分。试制作这个表格并说明查表方法。
       (1)作表:
       y=log2(x),由于x在0.5到1之间,因此y在-1到0之间,x和y均可用Q15表示。由于对x均匀划分为10段,因此,10段对应于输入x的范围如表3.2所示。若每一段的对数值都取第一点的对数值,则表中第一段的对数值为y0(Q15)=(int)(log(O.5)*32768),第二段的对数值为y1(Q15)=(int)(log2(0.55)*32768),依次类推,如表3.2所示。
       (2)查表:
       查表时,先根据输人值计算表的地址,计算方法为:
index=((x-16384)*20)>>15;
复制代码

       式中, index就是查表用的地址。例如,已知输人x=26869,则index=6,因此,y= -10549。
表1.2  logtab0 10点对数表
地址    输入值    对数值(Q15)
0    0.50-0.55    -32768
1    0.55-0.60    -28262
2    0.60-0.65    -24149
3    0.65-0.70    -20365
4    0.70-0.75    -16862
5    0.75-0.80    -13600
6    0.80-0.85    -10549
7    0.85-0.90    -7683
8    0.90-0.95    -4981
9    0.95-1.00    -2425


点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表