![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Algorithm
文章平均质量分 71
Algorithm
IOsetting
呵
展开
-
在Markdown中使用LaTex公式
在Markdown中使用LaTex公式原创 2024-02-21 19:29:07 · 928 阅读 · 0 评论 -
在嵌入式设备中用多项式快速计算三角函数和方根
在 MCS-51, Cortex M0, M3 之类的芯片上编程时, 能使用的资源是非常有限, 通常只有两位数KB的Flash, 个位数KB的RAM. 如果要使用三角函数和开方就要引入 math.h, 会消耗掉10KB以上的Flash空间. 在很多情况下受硬件资源限制无法使用 math.h, 这时候使用简化的方法进行三角函数和开方运算就非常有意义, OlliW's Bastelseiten在2014年的一篇文章里, 提供了几个实用的计算方法. 下面介绍其计算方法和代码实现.原创 2024-03-03 01:56:25 · 893 阅读 · 0 评论 -
惯性传感器的倾角计算
在判断物体在空间中的姿态以及运动轨迹时, 用得最多的是加速度和角速度传感器. 加速度传感器可以计算倾角, 陀螺仪可以计算角速度, 本文介绍常用的倾角计算方法, 结合陀螺仪提高动态精度的互补滤波.原创 2024-03-03 01:48:27 · 1038 阅读 · 0 评论 -
卡尔曼滤波器的定义,实例和代码实现
卡尔曼滤波器(Kalman filter)是一种高效的递归滤波器, 能够从一系列包含噪音的测量值中估计动态系统的状态. 因为不需要存储历史状态, 没有复杂计算, 非常适合在资源有限的嵌入式系统中使用. 常用于飞行器的导引, 导航及控制, 机械和金融中的时间序列分析, 轨迹最佳化等. 本文对卡尔曼滤波器的定义进行简化并提供了C语言的简易实现.原创 2024-02-28 19:31:07 · 1203 阅读 · 0 评论 -
欧拉公式 Euler‘s Formula
欧拉公式是数学中最重要的公式之一, 它涉及到了复数, 无理数, 三角函数, 简单优美. 建立了三角函数和普通指数运算的桥梁, 在计算机上, 计算三角函数 sin, cos 以及其派生出的其他数值, 都可以通过泰勒级数进行计算, 根据需要可以通过循环次数控制精度原创 2022-12-04 22:32:29 · 3364 阅读 · 0 评论 -
ADPCM(自适应差分脉冲编码调制)的原理和计算
ADPCM 用于解决 DPCM 的差值宽度问题, 通过定义一个差值表(例如IMA ADPCM 中使用 89个固定差值, 取值从7到32767), 将差值的范围放宽到16bit, 此时差值在数组中的编号只需要6bit就可以表示(0 - 88), 再进一步只记录编号的变化值, 就将变化量压缩到了4bit. ADPCM算法并没用固定标准, 最常见的是IMA ADPCM. 以下以 IMA ADPCM 为例进行说明原创 2022-11-22 20:41:30 · 1614 阅读 · 0 评论 -
DS18B20数字温度计 (三) 1-WIRE总线 ROM搜索算法和实际测试
以下说明当总线上存在多个 DS18B20 芯片时, 识别各个 DS18B20 的编号并进行通信的算法. 其实这是 1-Wire 总线的搜索算法, 当 1-Wire 总线上挂接了多个设备时, 总线控制端需要通过 ROM Search 命令来判断总线上存在的设备以及获取他们的8字节唯一ROM. 1-WIRE SEARCH ALGORITHM 算法规则和实现机制, ROM搜索算法的核心规则, 是在搜索中重复进行一个简单的三步操作...原创 2022-06-12 11:34:24 · 2632 阅读 · 7 评论 -
STC8H开发(十一): GPIO单线驱动多个DS18B20数字温度计
DS18B20 是一个单线通信的数字温度计, 允许在一根总线上挂接多个 DS18B20 并分别通信, 在普通温度下, 可以直接从数据口取电, 这时候只需要两根连线. 供电电压兼容3.3V和5V, 温度检测范围[-55°C, +125°C]摄氏度, 在 [-10°C, +85°C] 精确率可以达到 ±0.5°C. DS18B20内部有9字节的暂存器和3个字节的EEPROM存储, 带一个8字节的唯一序列号. 文中会说明其8位CRC的计算方式, 以及单线总线上多个DS18B20的搜索算法.............原创 2022-06-04 23:01:49 · 853 阅读 · 0 评论 -
多模式匹配的Trie实现
业务场景这种需求一般用于敏感词过滤等场景, 输入是大文本, 需要快速判断是否存在匹配的模式串(敏感词), 或者在其中找出所有匹配的模式串. 对于模式串数量不超过5000的场景, 直接用暴力查找速度也能接受, 对于更大规模的模式串, 需要对匹配进行优化.实现原理带Fail Next回溯的Trie树结构是常见的实现方法, 算法原理可以自行查找"多模式匹配算法". 在实际使用中, 对于中文的模式...原创 2020-04-28 16:08:00 · 132 阅读 · 0 评论 -
信息熵 Information Entropy
信息熵用于描述信源的不确定度, 即用数学语言描述概率与信息冗余度的关系.C. E. Shannon 在 1948 年发表的论文A Mathematical Theory of Communication中指出, 任何信息都存在冗余, 冗余大小与信息中每个符号(数字, 字母或单词)的出现概率或者说不确定性有关. Shannon 借鉴了热力学的概念, 把信息中排除了冗余后的平均信息量称为信息熵, ...原创 2019-09-17 17:48:00 · 367 阅读 · 0 评论 -
用于KV集群的一致性哈希Consistent Hashing机制
KV集群的请求分发假定N为后台服务节点数,当前台携带关键字key发起请求时,我们通常将key进行hash后采用模运算 hash(key)%N 来将请求分发到不同的节点上, 后台节点的增删会引起几乎所有key的重新映射, 这样会造成大量的数据迁移,如果数据量大的话会导致服务不可用.一致性哈希机制我倾向于称之为一致性哈希机制而不是算法, 因为这其实和算法没太大关系. 设计这种机制的目的是当节点...原创 2019-05-18 23:21:00 · 200 阅读 · 0 评论 -
堆排序Heapsort的Java和C代码
Heapsort排序将整个数组看作一个二叉树heap, 下标0为堆顶层, 下标1, 2为次顶层, 然后每层就是"3,4,5,6", "7, 8, 9, 10, 11, 12, 13, 14", ..., 对于其中的每一个非叶子节点, 其子节点的下标为 2 * pos + 1 和 2 * pos + 2循环进行以下工作:标记当前堆的右边界将堆初始化为大顶堆将堆顶置换到右边界, 同时将右...原创 2019-05-16 01:58:00 · 60 阅读 · 0 评论 -
素数相关的算法
素数计算素数相关的计算,主要有这几个方面:列出某个范围内的所有素数;判断某个数是否为素数;其实是2)的扩展,快速获取一个大素数列出某个范围的所有素数这个可以分成两种类型,一种是列出从1至N的所有素数,另一个是在一个较大数值的区间,列出所有素数。列出1至N的所有素数1) 普通计算方式, 校验每个数字优化的几处:判断是否整除时, 除数使用小于自身的平方根的素数大于3的素数...原创 2019-05-12 23:35:00 · 262 阅读 · 0 评论 -
动态规划处理diff算法 Myers Diff (正向)
Eugene W. Myers 在他1986年发表于"Algorithmica"的论文"An O(ND) Difference Algorithm and Its Variations"中描述了一种用于处理diff的基础贪婪算法. 在他的论文中, 还对这种算法进行了扩展"Linear Space Refinement".定义文件A和文件B, 算法会读取两个文件的输入, 假设B为新版本, 算法会...原创 2018-07-05 00:51:00 · 301 阅读 · 0 评论 -
动态规划处理01背包问题
对于物品X, 重量, 价值和背包总容量为以下数值的情况下, 求在背包容量限制下得到最大价值的物品组合方式5个物品,(重量w,价值v)分别为:(5,12),(4,3),(7,10),(2,3),(6,6)1. 假设最优答案我们假设最优答案为00011。这样根据动态规划要求,考虑最优子问题。一般考虑子问题都是减少问题包含元素数量,同时保持子问题与原问题属于同种问题,只是考虑数量减少了。比如...原创 2018-07-04 15:54:00 · 54 阅读 · 0 评论 -
自然语言处理
自然语言处理1. NLTK python的NLP工具包2. WordNet 英文的语义网络3. BabelNet 多语言版的语义网络, 全部数据有29GB, 需要以科研的身份申请, 否则只能在线上用每天限量1k的接口. 等有空试验下接口.4. 决策树分类器5. 朴素贝叶斯分类器6. 最大熵分类器 -- 需要补习概率论知识了Update 2018-06-15: 浙大概率论第四版, 看...原创 2018-06-12 12:49:00 · 172 阅读 · 0 评论 -
等额本息计算式的推导
其中P是全额, R是月息, N是期数.对于等额本息, 每个月的还款数额相同, 但是利息是递减的, 第一个月是全额的一个月利息, 第二个月是去掉第一个月本金后剩余金额的一个月利息, 如下:假定每月还款为x, 总借款金额为m, 月息为r, 各月所还本金可以按如下计算a1 = x - m*ra2 = x - (m - a1)*ra3 = x - (m - a1 - a2)*r...an = x...原创 2015-10-10 21:03:00 · 182 阅读 · 0 评论 -
匹配字符串的KMP算法
其中next序列,表示子串的前后缀最大匹配长度. 例如对于字符串C[], next[i]表示子串c[0 .. i]中, 前缀与后缀的最大匹配长度.举例如果子串是 abcuab, 其前缀是a, ab, abc, abcu, abcua, 后缀是 b, ab, uab, cuab, bcuab, 其中匹配的最大子串是ab, 长度是2.按定义挨个计算next的值 public stati...原创 2015-05-31 00:25:00 · 54 阅读 · 0 评论 -
Distribute numbers to two “containers” and minimize their difference of sum
it can be solved by Dynamical Programming.Here are some useful link:Tutorial and Code: http://www.cs.cornell.edu/~wdtseng/icpc/notes/dp3.pdfA practice: http://people.csail.mit.edu/bdean/6.046/dp/ (th...原创 2015-05-29 00:50:00 · 67 阅读 · 0 评论