OpenCV cvSolve can solve the linear least-squares problem, for example:
// model: y = a1*x1 + a2*x2 + a3 CvMat *y = cvCreateMat(N, 1, CV_64FC1); CvMat *X = cvCreateMat(N, 3, CV_64FC1); CvMat *coeff = cvCreateMat(3, 1, CV_64FC1); // fill vector y and matrix X for (int i=0; i<N; ++i) { cvmSet(y, i, 0, my_y_value(i) ); cvmSet(X, i, 0, my_x1_value(i) ); cvmSet(X, i, 1, my_x2_value(i) ); cvmSet(X, i, 2, 1 ); } cvSolve(X, y, coeff, CV_SVD); // now coeff contains a1, a2, a3
However, I would like to apply different weights to my data. How to apply weights?
source share