C# 拟合数据点的方程

C# 拟合数据点的方程,c#,math,equation,differential-equations,C#,Math,Equation,Differential Equations,我有一个有趣的问题,需要一些编码帮助。我有一个用于驱动电流源的硬件DAC。通过设置特定的DAC值,我可以获得特定的电流读数。这还取决于总电源电压 总体目标是在电源中设置所需电流,以计算DAC值。该项目是一个测试设备,因此在校准阶段,我读取指定电压下DAC值的所有电流。这一切都很好,在过去,我只是做了一个简单的计算,得到Y=aX+c,并计算了a和c,其中X是所需的电流,Y是DAC值。最佳拟合线足够简单,工作正常。然而,我现在需要大大提高准确性 图中的DAC和电流基本上是线性的,但在中值范围内只有一

我有一个有趣的问题,需要一些编码帮助。我有一个用于驱动电流源的硬件DAC。通过设置特定的DAC值,我可以获得特定的电流读数。这还取决于总电源电压

总体目标是在电源中设置所需电流,以计算DAC值。该项目是一个测试设备,因此在校准阶段,我读取指定电压下DAC值的所有电流。这一切都很好,在过去,我只是做了一个简单的计算,得到Y=aX+c,并计算了a和c,其中X是所需的电流,Y是DAC值。最佳拟合线足够简单,工作正常。然而,我现在需要大大提高准确性

图中的DAC和电流基本上是线性的,但在中值范围内只有一个驼峰,但足以限制精度达到2%。对于这个版本的硬件,我需要0.1%个,我可以达到2048个采样点,所以数据范围很好。p> 我希望特征的二阶或三阶多项式表示将有助于提高精度。虽然数学不是我无法理解的,但编码是!基本上,我是一名嵌入式硬件工程师,C#编码花了我更长的时间来思考。硬件是一个嵌入式Atmel处理器。校准编码使用Visual Studio与外部参考仪表和目标硬件进行通信

基本上,多项式方程将使用校准期间计算的系数放置在目标硬件中

因此,任何帮助都将不胜感激!
马克

人们也可以尝试一个有理函数,三次方除以二次方。渐近线性,中间有凸起的可能性。 例如,
1+x+0.01/(1+x²)
就是这种形式

一般公式为
y=(a*x³+b*x²+c*x+d)/(e*x²+f*x+1)
。要获得系数中的线性形式,请与分母相乘以获得

0 = a*x³+b*x²+c*x+d - e*x²y-f*xy-y
这将给出一个带行的系数矩阵

[ x³, x², x, 1, -x²*y, -x*y, -y ]

对于每个数据点
(x,y)=(x[k],y[k])
。然后对该矩阵应用QR分解,并求解
R*v=0
v=[a,b,c,d,e,f,1]^T
(显然不考虑系统的最后第7行)。

问题到底是什么:实现多项式的计算还是系数的查找?多项式回归使用Gauss-Jordan消去法工作,因此需要一些矩阵操作。如果您已经完成了一些工作,并且发布了一些代码,并且遇到了哪些问题,那么您应该更具体地了解您期望的答案是什么,或者,如果您还没有任何建议,您应该询问推荐的方法,并发布一些关于您正在使用的硬件类型的更详细信息。