c++ - 使用 GSL 拟合分段 "broken stick"模型

标签 c++ c modeling curve-fitting gsl

我正在尝试将函数拟合到我拥有的一些采样数据中。我了解并见过 GSL 中线性拟合的许多示例,但是我需要拟合的函数具有以下形式

x_i = c_0 + c_1*t_i

对于 i < 某个任意数字 (T)

x_i = c_0 + c_1*t_i + c_2*(T-t_i)

对于 i >= T。

为了形象化这一点,它是一条线(长度有限),在 T 指示的某个点上有一个中断。我一直在试图弄清楚如何在 GSL 中实现它,但我不知道拟合两个方程以及在不同的值范围内拟合两个方程的语法。我的数学能力不够强,而且 GSL 文档有点密集。

或者,如果 GSL 无法做到这一点,是否还有其他 C/C++ 库能够做到这一点?

编辑:我认为这实际上可能相当于以正常线性方式拟合断棍的前半部分,然后拟合后半部分(已知 c_0 和 c_1,并拟合 c_2)。我仍然不知道该怎么做,但我认为如果这是一个可能的解决方案,我正在做的事情可能是可以接受的。然而,我仍然想要一些方法来找到最好的T来打破棍子,但这并不是绝对必要的。

最佳答案

我解决了!

结果就像创建一个二维(即 3 节)的平滑 B 样条一样简单,我相信 GSL 仍然可以在线性时间内做到这一点。

关于c++ - 使用 GSL 拟合分段 "broken stick"模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14169978/

相关文章:

c++ - 为什么这段代码是 "not ambigious!"——虚函数

c 字段的结构、指针和内存分配

c - 使用 valgrind 的 hiredis 中的内存泄漏

input - 在 SIMULINK 中以编程方式设置输入端口的值

c++ - 如何将行号添加到 QTextEdit?

c++ - 将文件中的整数扫描到 C 中的数组中?

modeling - 数据流图中的推/拉可视化

list - 将主体集转换为 NetLogo 中的列表

c++ - mem_fn & bind 的一些实际用途

从命令行调用 MATLAB 并保持打开状态以进行下一步处理 - Linux