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
00042 void singularValueDecomposition(const QVMatrix &M, QVMatrix &U, QVMatrix &V, QVMatrix &S);
00043
00054 void LUDecomposition(const QVMatrix &M, QVMatrix &L, QVMatrix &U, QVMatrix &P);
00055
00063 void CholeskyDecomposition(const QVMatrix &M, QVMatrix &L);
00064
00073 void QRDecomposition(const QVMatrix &M, QVMatrix &Q, QVMatrix &R);
00074
00081 QVMatrix pseudoInverse(const QVMatrix &M);
00082
00091 void eigenDecomposition(const QVMatrix &M, QVVector &eigVals, QVMatrix &eigVecs);
00092
00100 double determinant(const QVMatrix &M);
00101
00113 double BhattacharyyaDistance(const QVVector &m1, const QVMatrix &S1, const QVVector &m2, const QVMatrix &S2);
00114
00123 void solveLinear(const QVMatrix &A, QVVector &x, const QVVector &b);
00124
00133 void solveLinear(const QVMatrix &A, QVMatrix &X, const QVMatrix &B);
00134
00144 void solveOverDetermined(const QVMatrix &A, QVMatrix &X, const QVMatrix &B);
00145
00153 void solveHomogeneousLinear(const QVMatrix &A, QVector<double> &x);
00154
00156 void solveHomogeneousLinear2(const QVMatrix &A, QVector<double> &x);
00157
00159 double homogLineFromMoments(double x,double y,double xx,double xy,double yy,double &a,double &b,double &c);
00160
00162 QVVector regressionLine(const QVMatrix &points);
00163
00164 #endif