我试图校准一些眼睛检测设备。我在csv文件中有校准数据。数据表是具有测量点的表,值是具有函数结果的表。 我假设这个模型是a x ^ 2 + b x + c y ^ 2 + d y + e。但是结果却与我本应得到的不同。我正在为C#使用Accord库。你能告诉我我在做什么错吗?
我从回归对象中获取系数(a,b,c,d,e)。当我使用此数据计算函数时,结果不正确。...
double[][] inputs = data.ToJagged(); // Measured data X,Y for each group of points i know real position on screen -> outputs
double[] outputs = values.ToArray(); // Known value of point
var nls = new NonlinearLeastSquares()
{
NumberOfParameters = 5,
// Initialize to some random values
StartValues = new[] { -4.3, 2.4, -1.0, 2.3, -0.6 },
// Let's assume a quadratic model function: a*x^2 + b*x + c*y^2 + d*y +e
Function = (w, x) => w[0] * x[0] * x[0] + w[1] * x[0] + w[2] * x[1] * x[1] + w[3] * x[1] + w[4],
// Derivative in respect to the weights:
Gradient = (w, x, r) =>
{
r[0] = x[0] * x[0]; // w.r.t a: x²
r[1] = x[0]; // w.r.t b: x
r[2] = x[1] * x[1]; // w.r.t c: y^2
r[3] = x[1]; // w.r.t d: y
r[4] = 1; // w.r.t e: 1
},
Algorithm = new LevenbergMarquardt()
{
MaxIterations = 1000,
Tolerance = 0.0001
}
};
var regression = nls.Learn(inputs, outputs);
黑色-已知点 蓝色-测量点 红色-计算和校准点