随笔分类 -  Algorithm

Algorithm problems
在嵌入式设备中用多项式快速计算三角函数和方根
摘要:在 MCS-51, Cortex M0, M3 之类的芯片上编程时, 能使用的资源是非常有限, 通常只有两位数KB的Flash, 个位数KB的RAM. 如果要使用三角函数和开方就要引入 math.h, 会消耗掉10KB以上的Flash空间. 在很多情况下受硬件资源限制无法使用 math.h, 这时候使用简化的方法进行三角函数和开方运算就非常有意义, OlliW's Bastelseiten在2014年的一篇文章里, 提供了几个实用的计算方法. 下面介绍其计算方法和代码实现. 阅读全文

posted @ 2024-03-03 17:11 Milton 阅读(445) 评论(0) 推荐(6) 编辑

惯性传感器的倾角计算
摘要:在判断物体在空间中的姿态以及运动轨迹时, 用得最多的是加速度和角速度传感器. 加速度传感器可以计算倾角, 陀螺仪可以计算角速度, 本文介绍常用的倾角计算方法, 结合陀螺仪提高动态精度的互补滤波. 阅读全文

posted @ 2024-03-03 01:46 Milton 阅读(1577) 评论(0) 推荐(1) 编辑

卡尔曼滤波器的定义,实例和代码实现
摘要:卡尔曼滤波器(Kalman filter)是一种高效的递归滤波器, 能够从一系列包含噪音的测量值中估计动态系统的状态. 因为不需要存储历史状态, 没有复杂计算, 非常适合在资源有限的嵌入式系统中使用. 常用于飞行器的导引, 导航及控制, 机械和金融中的时间序列分析, 轨迹最佳化等. 本文对卡尔曼滤波器的定义进行简化并提供了C语言的简易实现. 阅读全文

posted @ 2024-02-28 19:29 Milton 阅读(2431) 评论(0) 推荐(2) 编辑

ADPCM(自适应差分脉冲编码调制)的原理和计算
摘要:ADPCM 用于解决 DPCM 的差值宽度问题, 通过定义一个差值表(例如IMA ADPCM 中使用 89个固定差值, 取值从7到32767), 将差值的范围放宽到16bit, 此时差值在数组中的编号只需要6bit就可以表示(0 - 88), 再进一步只记录编号的变化值, 就将变化量压缩到了4bit. ADPCM算法并没用固定标准, 最常见的是IMA ADPCM. 以下以 IMA ADPCM 为例进行说明 阅读全文

posted @ 2022-11-22 20:39 Milton 阅读(4032) 评论(0) 推荐(0) 编辑

OCR 03: PaddleOCR
摘要:Catalog OCR 01: EasyOCR OCR 02: Tesseract-OCR OCR 03: PaddleOCR About Git repository https://github.com/PaddlePaddle/PaddleOCR Online demo https://www 阅读全文

posted @ 2022-10-31 15:11 Milton 阅读(228) 评论(0) 推荐(0) 编辑

OCR 02: Tesseract-OCR
摘要:Catalog OCR 01: EasyOCR OCR 02: Tesseract-OCR OCR 03: PaddleOCR Project Host And Brief Official Site: https://tesseract-ocr.github.io/ GitHub Reposito 阅读全文

posted @ 2022-10-31 15:08 Milton 阅读(159) 评论(0) 推荐(0) 编辑

OCR 01: EasyOCR
摘要:Catalog OCR 01: EasyOCR OCR 02: Tesseract-OCR OCR 03: PaddleOCR Related Links Official site with online demo: https://www.jaided.ai/easyocr/ Installat 阅读全文

posted @ 2022-10-31 14:31 Milton 阅读(435) 评论(0) 推荐(0) 编辑

DS18B20数字温度计 (三) 1-WIRE总线 ROM搜索算法和实际测试
摘要:以下说明当总线上存在多个 DS18B20 芯片时, 识别各个 DS18B20 的编号并进行通信的算法. 其实这是 1-Wire 总线的搜索算法, 当 1-Wire 总线上挂接了多个设备时, 总线控制端需要通过 ROM Search 命令来判断总线上存在的设备以及获取他们的8字节唯一ROM. 1-WIRE SEARCH ALGORITHM 算法规则和实现机制, ROM搜索算法的核心规则, 是在搜索中重复进行一个简单的三步操作 阅读全文

posted @ 2022-06-12 11:32 Milton 阅读(2657) 评论(3) 推荐(1) 编辑

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的搜索算法. 阅读全文

posted @ 2022-06-04 22:59 Milton 阅读(1557) 评论(0) 推荐(0) 编辑

多模式匹配的Trie实现
摘要:业务场景 这种需求一般用于敏感词过滤等场景, 输入是大文本, 需要快速判断是否存在匹配的模式串(敏感词), 或者在其中找出所有匹配的模式串. 对于模式串数量不超过5000的场景, 直接用暴力查找速度也能接受, 对于更大规模的模式串, 需要对匹配进行优化. 实现原理 带Fail Next回溯的Trie 阅读全文

posted @ 2020-04-28 16:08 Milton 阅读(464) 评论(0) 推荐(0) 编辑

信息熵 Information Entropy
摘要:信息熵用于描述信源的不确定度, 即用数学语言描述概率与信息冗余度的关系. C. E. Shannon 在 1948 年发表的论文A Mathematical Theory of Communication中指出, 任何信息都存在冗余, 冗余大小与信息中每个符号(数字, 字母或单词)的出现概率或者说不 阅读全文

posted @ 2019-09-17 17:48 Milton 阅读(1088) 评论(0) 推荐(0) 编辑

用于KV集群的一致性哈希Consistent Hashing机制
摘要:KV集群的请求分发 假定N为后台服务节点数,当前台携带关键字key发起请求时,我们通常将key进行hash后采用模运算 hash(key)%N 来将请求分发到不同的节点上, 后台节点的增删会引起几乎所有key的重新映射, 这样会造成大量的数据迁移,如果数据量大的话会导致服务不可用. 一致性哈希机制 阅读全文

posted @ 2019-05-18 23:21 Milton 阅读(306) 评论(0) 推荐(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 + 阅读全文

posted @ 2019-05-16 01:58 Milton 阅读(187) 评论(0) 推荐(0) 编辑

素数相关的算法
摘要:素数计算 素数相关的计算,主要有这几个方面: 列出某个范围内的所有素数; 判断某个数是否为素数; 其实是2)的扩展,快速获取一个大素数 列出某个范围的所有素数 这个可以分成两种类型,一种是列出从1至N的所有素数,另一个是在一个较大数值的区间,列出所有素数。 列出1至N的所有素数 1) 普通计算方式, 阅读全文

posted @ 2019-05-12 23:35 Milton 阅读(2392) 评论(0) 推荐(0) 编辑

动态规划处理diff算法 Myers Diff (正向)
摘要:Eugene W. Myers 在他1986年发表于"Algorithmica"的论文"An O(ND) Difference Algorithm and Its Variations"中描述了一种用于处理diff的基础贪婪算法. 在他的论文中, 还对这种算法进行了扩展"Linear Space R 阅读全文

posted @ 2018-07-05 00:51 Milton 阅读(3377) 评论(0) 推荐(0) 编辑

动态规划处理01背包问题
摘要:对于物品X, 重量, 价值和背包总容量为以下数值的情况下, 求在背包容量限制下得到最大价值的物品组合方式 1. 假设最优答案 我们假设最优答案为00011。这样根据动态规划要求,考虑最优子问题。一般考虑子问题都是减少问题包含元素数量,同时保持子问题与原问题属于同种问题,只是考虑数量减少了。比如我们减 阅读全文

posted @ 2018-07-04 15:54 Milton 阅读(283) 评论(0) 推荐(0) 编辑

自然语言处理
摘要:自然语言处理 1. NLTK python的NLP工具包 2. WordNet 英文的语义网络 3. BabelNet 多语言版的语义网络, 全部数据有29GB, 需要以科研的身份申请, 否则只能在线上用每天限量1k的接口. 等有空试验下接口. 4. 决策树分类器 5. 朴素贝叶斯分类器 6. 最大 阅读全文

posted @ 2018-06-12 12:49 Milton 阅读(227) 评论(0) 推荐(0) 编辑

欧拉定理, RSA计算实践
摘要:数学符号N: 自然数. The set of natural numbers (the positive integers Z-+ 1, 2, 3, ...), denoted N, also called the whole numbers. Like whole numbers, there i 阅读全文

posted @ 2017-12-25 01:17 Milton 阅读(839) 评论(0) 推荐(0) 编辑

等额本息计算式的推导
摘要:其中P是全额, R是月息, N是期数. 对于等额本息, 每个月的还款数额相同, 但是利息是递减的, 第一个月是全额的一个月利息, 第二个月是去掉第一个月本金后剩余金额的一个月利息, 如下: 假定每月还款为x, 总借款金额为m, 月息为r, 各月所还本金可以按如下计算 a1 = x - m*ra2 = 阅读全文

posted @ 2015-10-10 21:03 Milton 阅读(1467) 评论(0) 推荐(0) 编辑

匹配字符串的KMP算法
摘要:其中next序列,表示子串的前后缀最大匹配长度. 例如对于字符串C[], next[i]表示子串c[0 .. i]中, 前缀与后缀的最大匹配长度.举例如果子串是 abcuab, 其前缀是a, ab, abc, abcu, abcua, 后缀是 b, ab, uab, cuab, bcuab, 其中匹... 阅读全文

posted @ 2015-05-31 00:25 Milton 阅读(221) 评论(0) 推荐(0) 编辑

导航