#include <vdgl_ortho_regress.h>

Public Member Functions | |
| void | reset () |
| vdgl_ortho_regress () | |
| ~vdgl_ortho_regress () | |
| void | add_point (double x, double y) |
| void | add_points (double const *, double const *, unsigned) |
| void | add_points (float const *, float const *, unsigned) |
| void | remove_point (double x, double y) |
| void | remove_points (double const *, double const *, unsigned) |
| void | remove_points (float const *, float const *, unsigned) |
| double | cost (double a, double b, double c) const |
| The problem is to minimize total squared distance to the line u.x + d = 0, ie. | |
| double | rms_cost (double a, double b, double c) const |
| bool | fit (double *a, double *b, double *c) const |
| bool | fit_constrained (double x, double y, double *a, double *b, double *c) const |
Public Attributes | |
| unsigned | S1 |
| double | Sx |
| double | Sy |
| double | Sxx |
| double | Sxy |
| double | Syy |
Protected Member Functions | |
| bool | fit (double &a, double &b, double &c) const |
| bool | fit_constrained (double x, double y, double &a, double &b, double &c) const |
| The problem is to minimize total squared distance from a line passing through a given point x_0 : | |
Definition at line 21 of file vdgl_ortho_regress.h.
| vdgl_ortho_regress::vdgl_ortho_regress | ( | ) | [inline] |
Definition at line 34 of file vdgl_ortho_regress.h.
| vdgl_ortho_regress::~vdgl_ortho_regress | ( | ) | [inline] |
Definition at line 36 of file vdgl_ortho_regress.h.
| void vdgl_ortho_regress::add_point | ( | double | x, |
| double | y | ||
| ) | [inline] |
Definition at line 38 of file vdgl_ortho_regress.h.
| void vdgl_ortho_regress::add_points | ( | double const * | x, |
| double const * | y, | ||
| unsigned | n | ||
| ) |
Definition at line 14 of file vdgl_ortho_regress.cxx.
| void vdgl_ortho_regress::add_points | ( | float const * | x, |
| float const * | y, | ||
| unsigned | n | ||
| ) |
Definition at line 19 of file vdgl_ortho_regress.cxx.
| double vdgl_ortho_regress::cost | ( | double | a, |
| double | b, | ||
| double | c | ||
| ) | const |
The problem is to minimize total squared distance to the line u.x + d = 0, ie.
: minimize | u.x_i + d |^2 subject to |u|=1
Writing x_i = xbar + y_i, where xbar is the centroid of the point set, the sum becomes | u.(x_i - xbar) |^2 + S1 | u.xbar + d |^2 , so that the optimal line must pass through the centroid. To find u, we find the eigenvector of the scatter matrix M = (x_i - xbar)*(x_i - xbar)^t which has least eigenvalue.
Definition at line 74 of file vdgl_ortho_regress.cxx.
| bool vdgl_ortho_regress::fit | ( | double * | a, |
| double * | b, | ||
| double * | c | ||
| ) | const [inline] |
Definition at line 58 of file vdgl_ortho_regress.h.
| bool vdgl_ortho_regress::fit | ( | double & | a, |
| double & | b, | ||
| double & | c | ||
| ) | const [protected] |
Definition at line 79 of file vdgl_ortho_regress.cxx.
| bool vdgl_ortho_regress::fit_constrained | ( | double | x, |
| double | y, | ||
| double * | a, | ||
| double * | b, | ||
| double * | c | ||
| ) | const [inline] |
Definition at line 60 of file vdgl_ortho_regress.h.
| bool vdgl_ortho_regress::fit_constrained | ( | double | x, |
| double | y, | ||
| double & | a, | ||
| double & | b, | ||
| double & | c | ||
| ) | const [protected] |
The problem is to minimize total squared distance from a line passing through a given point x_0 :
minimize | u.x_i + d |^2 subject to |u|=1 u.x_0 + d = 0
But u.x_i + d = u.(x_i - x_0), so that we have to minimize u^t M u , where M = (x_i - x_0)*(x_i - x_0)^t. This is solved by taking the eigenvector of M of least eigenvalue.
Definition at line 106 of file vdgl_ortho_regress.cxx.
| void vdgl_ortho_regress::remove_point | ( | double | x, |
| double | y | ||
| ) | [inline] |
Definition at line 46 of file vdgl_ortho_regress.h.
| void vdgl_ortho_regress::remove_points | ( | double const * | , |
| double const * | , | ||
| unsigned | |||
| ) |
| void vdgl_ortho_regress::remove_points | ( | float const * | , |
| float const * | , | ||
| unsigned | |||
| ) |
| void vdgl_ortho_regress::reset | ( | ) | [inline] |
Definition at line 28 of file vdgl_ortho_regress.h.
| double vdgl_ortho_regress::rms_cost | ( | double | a, |
| double | b, | ||
| double | c | ||
| ) | const |
Definition at line 24 of file vdgl_ortho_regress.cxx.
| unsigned vdgl_ortho_regress::S1 |
Definition at line 24 of file vdgl_ortho_regress.h.
| double vdgl_ortho_regress::Sx |
Definition at line 25 of file vdgl_ortho_regress.h.
| double vdgl_ortho_regress::Sxx |
Definition at line 26 of file vdgl_ortho_regress.h.
| double vdgl_ortho_regress::Sxy |
Definition at line 26 of file vdgl_ortho_regress.h.
| double vdgl_ortho_regress::Sy |
Definition at line 25 of file vdgl_ortho_regress.h.
| double vdgl_ortho_regress::Syy |
Definition at line 26 of file vdgl_ortho_regress.h.
1.7.5.1