大家好, 我正在尝试找到一种算法来将正弦曲线拟合到数据集中。使用 python scipy 这非常简单,但现在我必须使用嵌入式 C 或 C++ 将整个算法引入 MCU。 您知道在 C++ 中执行此操作的好方法吗?有图书馆吗?
我正在尝试将用 python 编写的算法转换为嵌入式 C++。我希望找到一个 C++ 的库或算法。
一个非常简单的算法如下所示:没有参数的初始“猜测”值,没有迭代循环。易于使用 C++ 或任何其他语言进行编码。
如果您提供数据(数字而不是图形),我可以显示数值演算的每一步。
没有你的数据,我在扫描你的图表时制作了一个玩具数据。从图表的圆形“点”的 11082 个像素中,只随机抽取了 100 个像素。这些像素的坐标用于创建“玩具”数据。当然,这还远远不够准确。尽管如此,这种方法会产生以下结果。
此方法的原理解释于:https://fr.scribd.com/doc/14674814/Regressions-et-equations-integrales
回归的线性化是通过数值积分获得的:不是直接拟合正弦方程,而是拟合正弦函数作为解的积分方程。根据实验点的分布和分散情况,积分(Sk 和 SSk)的数值计算可能会导致或多或少的偏差。如果偏差太大,找到的参数的近似值可以用作良好的初始值来开始经典非线性回归的迭代过程。
您可能会发现 https://github.com/devernay/cminpack 很有用。
MINPACK 是经典的非线性最小二乘最小化器,用于许多曲线拟合问题。