Я пытаюсь откалибровать какое-нибудь устройство для обнаружения глаз.У меня есть данные калибровки в CSV-файле.Таблица данных - это таблица с измеренными точками, значение - это таблица с результатом функции.Я предполагаю, что эта модель a x ^ 2 + b x + c y ^ 2 + d y + e.Но результат другой, который я должен был получить.Я использую аккордовую библиотеку для c #.Не могли бы вы сказать мне, что я делаю неправильно?
Я получаю коэффициенты (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);
Черный - известные точки Синий - измеренныйточки Red - расчетные и откалиброванные точки