DSP泰勒级数展开设计sin函数

第一章:移植

1.1导入工程文件

导入ccs工程文件是将CCS2的工程文件放入到CCS5中,并无错误的运行工程文件内容,步骤如下:

1.1.1新建工程

点击project-new ccs project,在此页面中,输入工程文件的名字,选择对应的应用设备,点击创建一个空文件,最后点击Finish完成工程文件的创建。工程文件的创建已经做过很多次了,这里为了节省篇幅就不再过多赘述了。

1.1.2导入CCS的.c和.h文件

在自己所创建的工程名上右击,选择Add file,在寻找到老师所提供的CCS2文件工程,并将选择.c和.h文件,添加导入即可。如图所示:

工程文件导入完成。

1.2在5版本出sin函数动图

1.2.1配置工程文件

首先,完成debug,这一步做过很多次了,在这里就不详述了。将工程接口link到工程文件中即可。

第二步,给.c程序标注处设置断点,如下图:

第三步,将变量mysin[]添加到观察窗口中,这一步无关结果,添加的目的是为了方便观察和更改变量的值。

第四步,配置group图形界面的值,配置图形如下:图形配置的参数主要注意的是Dsp Data Type,该类型是浮点型,原因在程序中mysin数组定义的是浮点型。

1.2.2运行结果展示,并实现动图

运行结果是sin函数图形,如下:

动图的实现与配置。首先,右击断点选择Breakporint properties,配置页面参数如下:

点击确定,完成动图设置,由于动图不方便截图展示,就不放图片了。

第二章:设计

2.1什么是泰勒级数

2.1.1泰勒级数展开式:

泰勒级数是一个函数在某一点处展开成无穷级数的表达式。其表达式可以写成如下图所示的形式:

通过使用正弦函数在某一点处的泰勒级数展开,我们可以构建一个多项式函数来近似表示正弦函数,选择适当的级数项数是泰勒级数逼近,例如,通过截取泰勒级数的前10项,我们可以构建一个多项式函数,该多项式函数在某个区间内可以很好地逼近sin原函数。

2.2如何程序实现泰勒级数

2.2.1根据分析程序实现逻辑

选取泰勒级数展开的前十项,找泰勒级数展开式的前十项之间的关系。

比较不同:

  1. 展开式的分子的第一项是x,第二项是x^3,第三项是x^5……第十项是x^19。
  2. 展开式的分母的第一项是1,第二项是3!,第三项是5!……第十项是19!
  3. 展开式的奇数项是正,偶数项是负。

2.2.2程序如下:

2.3泰勒级数呈现出sin函数曲线图

2.3.1泰勒级数展开逼近sin函数程序图形如下:

第三章:优化

3.1代码执行效率分析及优化对比

程序优化的目的使代码的执行效率更高,运行时钟数更少,实现代码的稳定运行。

3.1.1将分子增量x*x被变量x2替换

将x2=x*x;,并将其x2放到for循环中,可以避免每次for循环对x*x的重复运算,调用x2的运算结果就可以,减少时钟运算。如下图所示:并于上图比较

3.1.2分母阶乘的优化

设计一个函数体实现泰勒级数展开分母运算出并将其存到事先定义好的数组内,当fun_sin()运算时,调用数组便可以,不用重复运算。

如下图所示:与上图比较

优化的内容还有一些,但由于优化的效果没有太理想,在这里就简单叙述一下,第一,将泰勒级数展开项由10项变为8项,图形没有发生太大畸变,也可以降低时钟周期。

第二,将泰勒级数的8项循环依次展开,使用直到型不采用循环,也可以减少循环。

最后,可以将泰勒级数展开的前几项算出,让CPU计算时调用即可。

第四章:实现

4.1完成全实域

全实域的sin函数的动图实现,要求时任意改变fun_sin的取值都能sin函数图像。

4.1.1程序设计

首先,定义一个函数体,将函数需要实现,将任意的区间的值都换算到[0-2Π]内,实现无论fun_sin输入值是多少,都可以实现sin函数图像。

如下代码:

4.2程序流程图

4.2.1主函数流程图如下:

  • 31
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值