the 8-Bit Fletcher Algorithm

Algorithm:

1、Ckecksum1 = 0
2、Checksum2 = 0
3、For each byte B from data array
4、Ckecksum1 = Ckecksum1 + B
5、Checksum2 = Checksum2 + Ckecksum1
6、Mask Ckecksum1 with 0xFF
7、Mask Checksum2 with 0xFF

* The result 2 bytes checksum sequence would be {Checksum1, Checksum2}.

Fletcher C语言实现

// the 8-Bit Fletcher Algorithm
uint16_t Fletcher16(uint8_t* data, int count) {
    uint16_t sum1 = 0;
    uint16_t sum2 = 0;
    int index;

    for ( index = 0; index < count; ++index ) {
        sum1 = (sum1 + data[index]) & 0xFF;
        sum2 = (sum2 + sum1) & 0xFF;
    }

    return (sum1 << 8) | sum2;
}

/******************************************************************************
** 函数:main
** 描述:main 函数,作为的程序入口
** 参数:无
** 返回:无
******************************************************************************/
int main(void)
{
    uint8_t data1[] = {0x06, 0x01, 0x03, 0x00, 0xF0, 0x00, 0x00};
    uint8_t data2[] = {0x06, 0x01, 0x03, 0x00, 0xF0, 0x01, 0x00};
    uint8_t data3[] = {0x06, 0x01, 0x03, 0x00, 0xF0, 0x02, 0x00};
    
    uint16_t ret1 = Fletcher16(data1, sizeof(data1));
    uint16_t ret2 = Fletcher16(data2, sizeof(data2));
    uint16_t ret3 = Fletcher16(data3, sizeof(data3));
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Levenberg-Marquardt-Fletcher算法是一种用于非线性最小二乘问题的迭代优化算法。该算法通过在每次迭代中结合高斯牛顿法和梯度下降法的优点,来求解非线性最小二乘问题。 该算法的基本思想是通过不断调整模型参数来提高目标函数的拟合度。在每一轮迭代中,算法根据当前参数估计计算目标函数的梯度矩阵和雅可比矩阵,然后使用这些矩阵来更新参数估计。更新参数的过程是通过调整一个称为 "衰减因子" 的参数,来平衡高斯牛顿法和梯度下降法对参数的调整力度。 具体地说,算法从初始参数值开始,计算目标函数的误差平方和和梯度矩阵。然后,根据衰减因子的大小来判断是使用高斯牛顿法还是梯度下降法。如果衰减因子较大,则使用梯度下降法进行参数调整;如果衰减因子较小,则使用高斯牛顿法进行参数调整。通过不断迭代调整参数,算法逐渐收敛到最优解。 Levenberg-Marquardt-Fletcher算法具有全局收敛性、快速收敛速度和较好的数值稳定性等优点。它在解决非线性最小二乘问题中广泛应用,比如曲线拟合、参数估计等领域。但是,该算法对初始参数的选择敏感,需要借助先验知识或试验来确定初始参数。 总之,Levenberg-Marquardt-Fletcher算法是一种强大的迭代优化算法,可以用于解决非线性最小二乘问题,通过不断调整模型参数来提高目标函数的拟合度和精度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值