问题标签 [best-fit-curve]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
307 浏览

octave - Octave leasqr 只进行一次迭代

当我试图将函数拟合到一些实验数据时,我编写了一个具有三个输入、三个参数和一个输出的函数:

当我生成一些输入和输出值时:

并调用 leasqr 函数:

这工作正常,该函数进行 7 次迭代并提供正确的输出。

但是当我从我的实验数据(一个包含三列,大约 1500 行的文本文件)以及我的 y1(一个具有相同行数的文本文件)加载 x1 并运行相同的函数时,它只进行一次迭代,并且不改变参数。

它甚至表明误差幅度非常高:

我究竟做错了什么?没有错误消息,没有“未实现收敛”或类似的东西......

编辑:数据是用命令加载的:

装载证明:

我的输入文件的前几行:

第二个和第三个参数在后面有不同的值。

0 投票
1 回答
3676 浏览

python-2.7 - 条形图上的 Python 曲线拟合

如何在条形图上拟合曲线?

我有一个方程,即扩散方程,它有一些未知参数,这些参数使曲线更大、更高等。另一方面,我有一个来自模拟的条形图。我想在条形图上拟合曲线,并找到曲线的最佳参数,我该怎么做?

这是我通过“手动拟合”获得的,所以基本上我手动更改了几个小时的所有参数。但是有没有办法用python做到这一点?

曲线拟合的尝试

为简单起见,假设我有以下代码:

显然,这里的拟合会非常困难,但无论如何,是否有任何函数或类似函数可以让我找到方程的最佳系数:(其中 T 已知)

编辑:这与已经提出的问题和 scipy 文档示例不同。在后者中,“xdata”是相同的,而在我的情况下,它可能是也可能不是。此外,我还可以绘制此曲线拟合,文档中未显示。条的高度不是 x 的函数!所以我的 xdata 不是我的 ydata 的函数,这与文档中的不同。要了解我的意思,请尝试稍微更改文档中的代码,以符合我的示例,请尝试以下操作:

如果你运行它,它就不起作用。原因是 ydata 有 16 个元素,函数有 50 个元素。发生这种情况是因为 y 从 xdata 中获取值,而 ydata 从另一组 x 值中获取值,这在此处是未知的。

谢谢

0 投票
0 回答
231 浏览

python - NumPy 多维 polyfit

我想用 numpy 创建一个非线性校准系统。我有一组对,其中每一对都是经验测量的 (x, y, z) 坐标和标称 (x, y, z) 坐标。我需要创建一个最适合的多维多项式方程组,以便将来的经验测量 (x, y, z) 坐标可以映射到它们不失真的位置。使用 polyfit() 在一个维度上执行此操作相当简单,但我不确定如何将其外推到多个维度。有任何想法吗?

谢谢

0 投票
1 回答
6433 浏览

python - IndexError:只有整数、切片(`:`)、省略号(`...`)。.

我正在使用 pymc3 来寻找最适合 3D 表面的方法。这是我正在使用的代码。

我在这一行有一个错误:

错误是:

我试图通过将 sin(x) 和 cos(y) 更改为 np.sin(x) 和 np.cos(y) 来修复它,但这没有用,我不知道还能做什么。

0 投票
1 回答
2771 浏览

r - 使用 R 可视化具有轨迹/最佳拟合平均增长曲线和意大利面条图的纵向数据

我有一个纵向数据集,其中包含我想直观比较的两组诊断。每个受试者都有一个、两个或三个数据点和许多因变量。

以下是数据示例:

结构(列表(id =结构(c(61L,7L,7L,14L,14L,43L,43L,64L,65L,65L,67L,68L,1L,1L,1L,2L,3L,4L,4L,5L, 6L, 8L, 8L, 10L, 10L, 11L, 11L, 12L, 12L, 13L, 15L, 17L, 18L, 19L, 20L, 20L, 21L, 21L, 21L, 22L, 23L, 24L, 24L, 27L, 29L, 29L, 29L, 30L, 30L, 33L, 33L, 37L, 37L, 38L, 45L, 51L, 51L, 51L, 55L, 55L, 56L, 62L, 32L, 36L, 36L, 36L, 39L, 40L, 40L, 41L, 41L, 42L, 42L, 44L, 44L, 44L, 46L, 46L, 47L, 47L, 48L, 49L, 50L, 50L, 50L, 52L, 52L, 52L, 53L, 53L, 54L, 54L, 57L, 57L, 58L, 59L, 59L, 60L, 63L, 63L, 63L, 66L, 9L, 9L, 16L, 16L, 25L, 26L, 28L, 31L, 31L, 31L, 34L, 34L, 35L, 35L), .Label = c("101 ”、“104”、“105”、“106”、“107”、“108”、“11”、“110”、“111”、“112”、“114”、“116”、“117”、“12”、“120”、“121”、“127”、“128”、“134”、“135”、“136”、“137”、“138”、“139”、“141”、“144” ”、“146”、“151”、“153”、“158”、“159”、“16”、“160”、“161”、“164”、“17”、“175”、“180”、 “22”、“23”、“27”、“32”、“33”、“34”、“4”、“41”、“42”、“44”、“45”、“46”、“5” ”、“52”、“54”、“57”、“6”、“7”、“71”、“73”、“75”、“77”、“8”、“9”、“91"、"93"、"95"、"96"、"97"、"98"), 类 = "因子"), 组 = 结构 (c(1L, 1L, 1L, 1L, 1L, 1L, 1L , 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L , 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L , 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L , 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L , 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("CON", "PAT"), class = "factor"), timepoint = structure(c(1L, 1L , 2L, 1L, 2L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 3L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 2L , 1L,2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 3L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 3L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 2L, 3L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 1L, 2L, 1L, 2L, 3L, 1L, 2L, 1L, 4L, 1L, 1L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 2L, 3L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 3L, 1L, 2L, 1L, 2L), .Label = c("1.00", "2.00", "3.00", "2.00"), 等级= "factor"), age = c(12.64722222, 15.89444444, 16.38333333, 12.76666667, 13.25555556, 12.03888889, 12.03888889, 14.11944444, 8.355555556, 9.311111111, 12.73888889, 12.27777778, 14.55277778, 15.54166667, 16.53055556, 12.53055556, 14.53888889, 14.36666667, 15.57222222, 12.93055556, 9.152777778、8.552777778、10.725、15.16944444、16.22777778、15.875、17。19166667, 11.88888889, 12.87777778, 8.161111111, 12.80833333, 10.86944444, 9.133333333, 14.51666667, 13.58333333, 14.98333333, 17.42777778, 18.42777778, 19.425, 12.81388889, 8.227777778, 14.86111111, 15.8391933, 17.48888889, 15.73055556, 16.68611111, 17.64501522, 15.63611111, 16.80277778, 14.09444444, 15.13006088, 15.21666667, 16.14269406, 9.2, 10.74444444, 13.34, 14.52222222, 15.64166667, 11.49166667, 12.48888889, 12.81, 15.70277778, 13.83333333, 17.09722222, 18.15555556, 19.22222222, 9.727777778, 15.32222222, 16.8, 14.40833333, 15.36944444, 15.91111111, 16.96666667, 15.61944444, 16.72777778, 17.725, 14.69722222, 16.99037291, 9.077777778, 10.07222222, 12.94520548, 15.01944444, 16.81944444, 17.925, 18.88333333, 13.50277778, 14.65555556, 15.77222222, 15.79166667, 16.86111111, 15.90833333, 16.8206621, 16.03611111,17.03337139, 9.583561644, 15.48888889, 16.46666667, 14.83055556, 16.32777778, 17.30585997, 18.31944444, 10.47222222, 16.29722222, 18.77222222, 10.07777778, 11.30277778, 7.444444444, 13.69863014, 6.261111111, 15.66944444, 16.65555556, 17.64459665, 17.63611111, 17.51944444, 10.775, 11.81111111), vol = c (548972.1775, 648425.585, 615478.6595, 601188.9513, 606759.7861, 598821.7733, 582035.8968, 475477.9975, 574780.474, 567670.6336, 623036.5768, 603722.0278, 526709.9175, 509533.1299, 516068.5599, 525279.5766, 558883.6295, 612427.3156, 599934.9009, 591680.4761, 639770.0607, 558242.4347, 549221.9145, 605292.8799, 550536.2854 , 511179.4063, 483482.6999, 558609.3465, 523856.3622, 576197.7365, 537253.1676, 627511.0046, 501817.1233, 616762.9889, 605997.8985, 582158.3157, 523472.5022, 504760.7745, 503067.4078, 646116.6452, 580252.1451, 597486.9348, 626396.6821, 572584.2842, 573443.347, 579332.7002, 473260.9821, 534797.636, 526065.6489, 560880.908, 542218.4166, 630812.8165, 629211.68, 608299.9884, 656401.4787, 571348.4899, 560327.5263, 543939.9021, 596117.8705, 584485.7293, 556320.8872, 626296.7889, 584663.1206, 656435.4865, 660134.5144, 643119.3113, 576699.6893, 531707.7736, 530264.4315, 541777.7762, 530922.3088, 610626.5987, 599960.3038, 650468.3647, 636040.7153, 635297.0107, 641780.0158, 599630.4608, 568276.3797, 574587.6778, 496635.5676, 539622.8043, 532498.2519, 516473.2384, 517793.2922, 535472.7677, 528296.0881, 523785.7416, 534744.7207, 524431.1189, 587735.5674, 582148.4209, 571915.1305, 568074.2646, 581270.9412, 560716.9027, 5324196.9.9387, 548777.309, 550087.9959, 539554.4263, 684722.458, 529343.8186, 546955.3154, 660572.5684, 660768.0026, 572548.3249, 598619.7422, 565051.5456, 596404.2088, 586308.6217, 592881.4289, 531294.8592, 543588.604, 644262.9365, 636280.5823)), .Names = c("id", " group”、“timepoint”、“age”、“vol”)、row.names = c(NA,-116L)、class =“data.frame”、codepage = 65001L)类 = “data.frame”,代码页 = 65001L)类 = “data.frame”,代码页 = 65001L)

我想使用轨迹/最佳拟合平均增长曲线以及意大利面条图来可视化每个因变量(在 y 轴上)随年龄(在 x 轴上)的变化,所以它看起来像这样:

最佳拟合平均增长曲线和意大利面条图 在此处输入图像描述

这是我到目前为止所拥有的:

代码:

输出:纵向意大利面条图 在此处输入图像描述

从输出图中可以看出,该图按主题(id)分组。我想保留连接每个主题的每个时间点的线,但按诊断分组,如第一张图所示。也不确定如何在意大利面条图上创建(和叠加)最佳拟合平均增长曲线。

最后,在为每个组拟合模型之后,R 中的哪个命令最适合获得汇总统计信息(即 p 值的 t 检验和 f 检验)?

0 投票
1 回答
2078 浏览

matlab - 二值图像的平滑和拟合边缘

我正在使用视频分析对鱼类游泳进行研究,然后我需要仔细处理图像(从视频帧中获得),重点放在尾部。

这些图像是高分辨率的,我自定义的软件适用于二进制图像,因为它很容易使用数学运算。

为了获得这个二进制图像,我使用了 2 种方法:

1)将图像转换为灰色,反转颜色,然后转换为 bw,最后转换为具有阈值的二进制,这给了我这样的图像,几乎没有噪音。图像有时会丢失一些区域,并且与尾部不完全一致(现在我需要更多的准确性来确定尾部移动的幅度) 图像 1

2)我使用这个代码,用于切割增加阈值的边界,这给了我一个很好的边缘图像,但我不知道像联合这些点并平滑图像,或拟合二进制图像,matlab 2012Rb的应用程序拟合没有给我一个好的图表,我也无法访问 matlab 的工具箱。

图2

我的问题是

我如何拟合二值图像或连接点并平滑而不干扰尾部?

或者我如何使用图像 2 的边缘来增加图像 1 的准确性?

我将在评论中上传一张图片,让我了解方法 2),因为我无法发布更多链接,请记住我正在使用迭代,我无法逐帧工作。

注意:如果我问这是因为我处于死角并且我没有资源支付给某人这样做,直到此刻我能够编写代码但在最后一个问题中我不能孤单.

0 投票
1 回答
402 浏览

python - Scipy.optimize 不适合我的数据

我无法scipy.optimize.curve_fit正确拟合我的数据,这些数据在视觉上很明显。我大致知道参数值应该是什么,如果我使用给定参数评估函数,计算和实验数据似乎很吻合:

计算和实验数据

但是,当我使用scipy.optimize.curve_fit具有最小误差的输出参数时,它的拟合效果要差得多(通过目视检查)。如果我使用“已知”参数作为我的初始猜测并将参数绑定到一个相对较窄的窗口,如 fit 函数的输出示例所示:

拟合函数的输出示例

我获得的误差值大了 ~10^2 倍,但拟合的视觉外观似乎更好。我可以使数据看起来像样的唯一方法是将所有参数与〜0.3个单位的“已知”参数绑定。我计划使用这个代码来拟合更复杂的数据,我事先不知道参数,所以我不能只使用计算出的图。

相关代码如下:

数组是从文件中导入的(我不能包括在内),并且没有异常点会导致拟合变得如此扭曲。任何帮助表示赞赏。

编辑 我包含了附加代码和与代码一起使用的输入数据,但您必须将其重新保存为 MS-Dos .CSV

0 投票
0 回答
76 浏览

curve-fitting - 如何绘制延长曲线?

我的问题是,我有一条带有红点的曲线,如下图所示。我想像图像中的蓝点一样扩展曲线。我该怎么做? 在此处输入图像描述

我认为用红点找到贝塞尔曲线并以某种方式扩展贝塞尔函数可能会奏效,但我不确定。欢迎任何想法!

0 投票
1 回答
450 浏览

matlab - [Octave]使用 fminunc 并不总是给出一致的解决方案

我试图在方程中找到系数来模拟电机的阶跃响应,其形式为1-e^x。我用来建模的方程式是

(它来源于一篇用于求解电机参数的研究论文)

有时使用fminunc来查找系数效果很好,我得到了一个很好的结果,它与训练数据匹配得很好。其他时候返回的系数是可怕的(比输出应该高得多,而且相差几个数量级)。当我开始使用高阶项时尤其会发生这种情况:使用任何使用x^8或更高阶项(x^9x^10x^11等)的模型总是会产生不好的结果。

由于它有时会起作用,我想不出为什么我的实现会出错。我fminunc在提供渐变和不提供渐变的同时尝试过,但没有区别。我已经研究过使用其他函数来求解系数,例如polyfit,但在这种情况下,它必须具有从1最高阶项提升到的项,但我使用的模型在 处具有最低功率2

这是主要代码:

这是costFunction

突然的坏结果

任何帮助或建议将不胜感激。

0 投票
2 回答
396 浏览

matlab - 围绕散点图上的点生成曲线

我正在生成一个包含来自多个来源的数据的散点图,如下所示。

散点图

我希望能够生成一条围绕任意查询点并通过散点图上的点的曲线。最终目标是计算图上线条之间的面积。

我已经实现了使用knnsearch以圆形方式查找点然后应用hampel过滤器来消除噪声的解决方案。在下面的示例中,我在蓝色阴影区域的中间选择了一个点。如您所见,结果远非完美,我需要更精确。

不是那么完美的结果

我正在寻找类似于boundary功能的东西,但要从点云内部工作,而不是从外部工作。