00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00024
00025 #ifndef QMATRIXALGEBRA_H
00026 #define QMATRIXALGEBRA_H
00027
00028 #include <QVector>
00029 #include <QVMatrix>
00030
00040 void singularValueDecomposition(const QVMatrix &M, QVMatrix &U, QVMatrix &V, QVMatrix &S);
00041
00052 void LUDecomposition(const QVMatrix &M, QVMatrix &L, QVMatrix &U, QVMatrix &P);
00053
00061 void CholeskyDecomposition(const QVMatrix &M, QVMatrix &L);
00062
00071 void QRDecomposition(const QVMatrix &M, QVMatrix &Q, QVMatrix &R);
00072
00079 QVMatrix pseudoInverse(const QVMatrix &M);
00080
00089 void eigenDecomposition(const QVMatrix &M, QVVector &eigVals, QVMatrix &eigVecs);
00090
00098 double determinant(const QVMatrix &M);
00099
00111 double BhattacharyyaDistance(const QVVector &m1, const QVMatrix &S1, const QVVector &m2, const QVMatrix &S2);
00112
00121 void solveLinear(const QVMatrix &A, QVVector &x, const QVVector &b);
00122
00131 void solveLinear(const QVMatrix &A, QVMatrix &X, const QVMatrix &B);
00132
00142 void solveOverDetermined(const QVMatrix &A, QVMatrix &X, const QVMatrix &B);
00143
00151 void solveHomogeneousLinear(const QVMatrix &A, QVector<double> &x);
00152
00154 void solveHomogeneousLinear2(const QVMatrix &A, QVector<double> &x);
00155
00157 double homogLineFromMoments(double x,double y,double xx,double xy,double yy,double &a,double &b,double &c);
00158
00160 QVVector regressionLine(const QVMatrix &points);
00161
00162 #endif