正切函数的查表法实现

在嵌入式领域,三角函数运算比较影响效率,可以使用查表法提高效率

//1, 正切函数值表,90度时取值1000,这个还是浮点运算的,还是不够
const double TAN[91] = {
0,0.017,0.035,0.052,0.070,0.087,0.105,0.123,0.141,0.158,0.176,0.194,
0.213,0.231,0.249,0.268,0.287,0.306,0.325,0.344,0.364,0.384,0.404,
0.424,0.445,0.466,0.488,0.510,0.532,0.554,0.577,0.601,0.625,0.649,
0.675,0.700,0.727,0.754,0.781,0.810,0.839,0.869,0.900,0.933,0.966,
1.000,1.036,1.072,1.111,1.150,1.192,1.235,1.280,1.327,1.376,1.428,
1.483,1.540,1.600,1.664,1.732,1.804,1.881,1.963,2.050,2.145,2.246,
2.356,2.475,2.605,2.747,2.904,3.078,3.271,3.487,3.732,4.011,4.331,
4.705,5.145,5.671,6.314,7.115,8.144,9.514,11.430,14.300,19.081,28.635,
57.286,1000
};
// 这个使用位移15位,把浮点运行换成整数乘法和位移,对一个角度 angle(角度,不是弧度) 有
y = x * ITAN[angle] >> 15;
// 为了提高精度,可以加大位移数,本处使用的是: ITAN[angle] = TAN[angle] * 2的15次幂。90度时的无穷大用一个大数代替
const int ITAN[91] =
{568,1136,1705,2275,2847,3420,3995,4573,5153,5737,6324,6916,7512,8112,8718,9330,
9947,10572,11203,11842,12489,13145,13811,14486,15172,15869,16578,17300,18035,18785,
19550,20331,21129,21946,22782,23639,24518,25420,26347,27301,28283,29296,30340,31420,
32536,33692,34891,36135,37428,38775,40179,41644,43177,44782,46466,48237,50101,52068,
54149,56354,58696,61191,63855,66709,69774,73077,76650,80529,84759,89392,94491,100135,
106420,113466,121425,130494,140928,153069,167382,184520,205423,231504,264982,309556,371883,
465278,620809,931674,1863846,1863846
};

--------------------------------------------------------------------
户外低价正品[size=medium][color=blue][b]jfhw360.taobao.com[/b][/color][/size]
滑模控制中的双曲正切函数应用:从理论到仿真实践 本文深入探讨了双曲正切函数在滑模控制中的应用,有效解决了传统方法中的抖振问题。通过理论分析、参数调节技巧和MATLAB仿真实战,展示了如何设计基于双曲正切函数的滑模控制器,并提供了工程应用中的常见问题解决方案。 阅读详情

相关推荐

利用查表法实现高效三角函数计算的C/C++源码

查表法,也称为查表技术或预先计算存储技术,是一种在数值分析和计算领域广泛采用的优化方法。其核心思想是,对那些计算成本高且需要反复计算的函数值进行预先计算,然后将这些值存储在一个表中,以便在实际运算时直接查询,避免重复的计算过程。这种方法尤其适用于函数值计算量大的场景,比如在图形渲染、科学计算、数据分析等领域中,通过查表法可以显著提高计算效率,缩短程序执行时间。查表法的优势主要体现在以下几个方面:提高效率。

weixin_28729843的博客 1434

查表法处理sin,cos,tan函数-360到360度的值

查表法处理sin,cos,tan函数-360到360度的值

目前从事linux驱动开发,多交流多学习吧 888

利用查表法实现反正切值计算角度

利用查表法实现反正切值计算角度,适合那些没有浮点运算功能的单片机

查表法实现三角函数

开发新游戏时,由于MTK不支持浮点运算,所以没有自带的三角函数,而游戏中这些是很重要的函数,会经常用到,所以自己参考相关文章,利用软件查表法,重新写了这些函数,我们看代码。正弦函数与余弦函数求出来的值,在与相关数值相乘后,必须除以4096才能是正确的值 int DSIN_TABLE[91] = {0,71,142,214,285,356,428,499,570,640,711,781,851,9

wylike的专栏 8403

atan2查表算法、linux内核kfifo脱离平台实现、crc校验算法、数值序列化等通用库

该工具库代码符合MISRA-C2004规范,特别适用于资源紧张、无FPU的嵌入式平台,实现效率高,接口定义清晰,注释清晰,是可通用的工具库,包括如下: 1、atan2_tab.h atan2的查表法实现 2、convertor.h 支持整数、浮点与字节数组的互相转换,支持大小端设定 3、crc.h 包含crc16-ccitt和crc32的算法实现 4、fifo.h 参考linux kernel的kfifo的实现,无锁读写,效率高 5、math_fast.h 开根号sqrt的快速算法实现

atan2查表算法

atan2的查表法实现,支持宏定义调整精度,非常适合没有带FPU的MCU使用。

自己做三角函数

在MTK上开发新游戏时,由于MTK不支持浮点运算,所以没有自带的三角函数,而游戏中这些是很重要的函数,会经常用到,所以自己参考相关文章,利用软件查表法,重新写了这些函数,我们看代码。正弦函数与余弦函数求出来的值,在与相关数值相乘后,必须除以4096才能是正确的值相关的参考文章地址:http://blog.youkuaiyun.com/KyosukeNo1/archive/2006/05/28/759445.a...

weixin_33705053的博客 107

三角函数查表方式c语言实现

三角函数的值的获取,一种通过系统自带的三角函数获取,另一种通过查表方式获取,查表的方式的精确程度是通过这个表有多少项来决定的,这个代码里提供的表项为8193,精度大致在0.000767左右。

嵌入式学习笔记 - 用泰勒公式解决 tanh函数

适用条件:泰勒展开在t接近 0 时精度最高,当|t| > 1.5时误差会明显增大性能考虑:原函数包含exp计算,泰勒展开用多项式替换可以显著提高计算速度精度权衡:如果t的范围较大,建议使用五阶或七阶展开,或者保持原函数你可以根据t的典型取值范围选择合适的展开阶数。

qq_35771411的博客 1109

保姆级教程:用GEE(Google Earth Engine)复现CASA模型计算NPP,附完整数据集清单与Python代码

本文提供了一份详细的保姆级教程,指导如何使用GEE(Google Earth Engine)复现CASA模型计算NPP(净初级生产力)。教程涵盖环境准备、关键数据集获取与处理、Python代码实现全流程,以及结果验证与常见问题解决方案,帮助生态学研究者高效完成NPP计算。

weixin_28707365的博客 334

一文读懂无人机AI识别算法,原理、技术、应用

本文详细介绍了无人机识别算法的工作原理、技术优势以及在多个行业的应用前景,展现了其在提升安全监控、资源管理和应急响应中的关键作用。尽管无人机识别算法在多个领域展现出巨大潜力,但仍面临技术挑战,如算法的准确性、数据的实时处理能力以及对复杂环境的适应性。4. 消防与城市管理: 无人机识别算法在消防和城市管理中的应用,为相关部门提供了及时的信息支持,提升了应急处置能力和城市管理水平。1. 公安监控: 无人机识别算法在公安领域的应用,可以实时识别犯罪嫌疑人和违法行为,有效提升城市治安管理的智能化水平。

foiadrone的博客 1848

Fine语言中math.atan(x)函数详解与应用实践

反正切函数是三角函数中的重要概念,用于计算给定比值的对应角度。其数学原理基于正切函数的反函数关系,在计算机中通常通过多项式近似或查表法实现。math.atan(x)返回弧度值,范围在-π/2到π/2之间,这一特性使其在图形编程、物理模拟和机器人导航等工程领域具有广泛应用价值。在Fine语言中,该函数经过高度优化,计算效率出色,但开发者需注意其与math.atan2(y,x)的区别,前者存在象限限制而后者能处理全圆周角度。实际应用中,该函数常用于计算两点间角度、物体运动方向等场景,是游戏开发、自动控制系统等领

weixin_30225755的博客 250

神经网络(十五)在VS Code下搭建PyTorch环境

pytorch在vscode中的配置和使用

就随便写写.... 5万+

【亲测免费】 高效三角函数计算:C语言查表法实现

高效三角函数计算:C语言查表法实现 【下载地址】三角函数查表方式C语言实现 本资源提供了一种高效的三角函数值计算方法——查表法,以及其C语言实现。在高性能计算和嵌入式系统中,直接调用系统库函数计算三角函数虽然方便,但可能会因函数调用开销和高精度需求导致效率问题或资源消耗较大。为此,本项目结合了两种主流的计算策略:1. *...

gitblog_09757的博客 1435

【迁移学习综述】

迁移学习的目标是将某个领域或任务上学习到的知识应用到不同的但相关的领域或问题中。迁移学习的研究来源于一个观测:人类可以将以前的学到的知识应用于解决新的问题,更快的解决问题或取得更好的效果。迁移学习被赋予这样一个任务:从以前的任务当中去学习知识(knowledge)或经验,并应用于新的任务当中。换句话说,迁移学习目的是从一个或多个源任务(source tasks)中抽取知识、经验,然后应用于一个目标领域(target domain)当中去。

afadgas的博客 4319

海康工业相机硬件触发与YOLOv5实时检测的工业自动化实践

本文详细介绍了如何将海康工业相机的硬件触发模式与YOLOv5目标检测模型相结合,构建一套高实时性的工业自动化质检系统。文章从产线痛点出发,深入解析了硬件接线、SDK回调取图的实战技巧(包括规避常见Bug),并展示了如何将YOLOv5封装为服务,最终通过Flask API串联业务逻辑,实现从精准触发到实时AI判断的完整落地流程。

k6l7m8n9的博客 492

arctan查表法_关于DSP的一些反正切查表算法的编写

关于DSP的一些反正切查表算法的编写一直在拿TMS20F28335做电机控制,也从早前的简单寄存器IO口配置时代过渡到了真正的算法时代,很不适应,起初去查各种书籍,网上搜索各种网站,发现书本上讲的很多都是快速傅里叶啊啥的,找不到很原始的像啥低通滤波器,正弦,正切这些函数的编写。起初写程序发现,C2000的库里支持啥正弦函数,浮点预算,反正弦函数,开根运算等算法,好兴奋。用了才知道,太慢了,根本没法...

weixin_39726873的博客 1711

Hindsight 内存爆炸 4 个词排查清单:9,284 条 6 成是 SSH 调试日志——Agent 标签系统的实战复盘

9,284 条记忆里 66% 是 SSH 调试日志。4 个标签被滥用=0 区分度。3 个 entity_labels + retain_mission + retain_every_n_turns 配置把噪声压回 5%——附 PATCH 脚本和实测前后数据。

Starry-SkyJing的博客 57

arctan查表法_arctan()函数的查表算法

arctan()函数的查表算法文集库2020-05-13 14:34:560目标:实现反正切函数的查表算法,精度0.5°。分析:f(x)=arctan(x)函数单调但非线性,越接近原点处,斜率越大。90°比较特殊,其值为正无穷大,只要得到的正切值tana大于114.59(89.5度对应的正切值),就可以认为是90度。假如0-89.5°用一个查找表实现,索引为正切值,值为角度值。tan89.5为11...

weixin_39821604的博客 5219

多维时空数据介绍(4)多维栅格数据构建

上图中包含了经度、纬度和时间三个维度,其变量为经度、纬度、时间以及降雨量,对应的变量单位为东经多少度、北纬多少度、阳历1895-1-1日开始多少天以及每年降雨多少毫升,其中经度数值4个、纬度数值3个、时间数值2个都是一维的数据,而降雨量是一个包含经度、纬度、时间的三维数组,数值有4*3*2=24个。在GeoScene 中NetCDF数据可以用做多种多维时空数据的数据源,进行创建、可视化和分析,它可以是多维栅格数据、时空立方体,还可以是体元图层,区别在于其所要表示的内容和目的。变量又分为坐标变量和属性变量。

你好,我是小张同学! 1286

PyTorch强化学习实战(1)——强化学习(Reinforcement Learning,RL)详解

在本节中,开始进入探索强化学习 (Reinforcement Learning, RL) 之旅,首先剖析了强化学习的独特之处及其与监督学习、无监督学习范式的关系。随后系统学习了强化学习的基础形式化框架及其内部关联机制,并深入讲解了马尔可夫过程 (Markov Process, MP)、马尔可夫奖励过程 (Markov Reward Process, MRP) 和马尔可夫决策过程 (Markov Decision Process, MDP),为后续学习奠定基础。

盼小辉丶的博客 2050

项目积累NO3.查表法解三角函数

由于单片机解三角函数、反三角函数耗时太大,故此常常使用查表法来解。查表法所用数据可以通过Matlab事先计算所得,放置程序。注意,要求精度越高,放置数据量所占空间越大,故此需要权衡。 一、边角关系 (正弦) Sinθ = 对边A / 斜边C (余弦) Cosθ = 邻边B / 斜边C (正切) Tanθ = 对边A / 邻边B 二、弧度与角转换 #define pi 3...

藏镜人 3848

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

arctan查表法_角度正切值表

tan(0°) = 0tan(1°) = 0.01746tan(2°) = 0.03492tan(3°) = 0.05241tan(4°) = 0.06993tan(5°) = 0.08749tan(6°) = 0.1051tan(7°) = 0.12278tan(8°) = 0.14054tan(9°) = 0.15838tan(10°) = 0.17633tan(11°) = 0.19438t...

weixin_39663360的博客 10万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

查表法实现反正切_关于python实现CRC32的应用和总结

关于python实现CRC32的应用和总结目前使用的Crc计算包含Crc32和Crc32mpeg2两种计算方式。循环冗余检验 CRC 差错检测技术能够证明数据是完整的,是无差错的(只是非常近似的认为是无差错的)。保证数据可靠性传输的方法包含如下:检验和用循环冗余码Crc检验接收到的数据完整性,Crc计算结果完全一致表示数据是完整的,没有发生错位。确认应答机制(ACK)TCP通过确认应答机制实现可靠...

weixin_42316319的博客 513

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

上一篇: hibernate one-to-one 关联的lazy问题
下一篇: C语言宏定义技巧(常用宏定义)
thinkact
博客等级 码龄25年 2粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值