![]() |
University of Murcia, Spain ![]() |
src/qvmath/qvstatistics.cppGo to the documentation of this file.00001 /* 00002 * Copyright (C) 2007, 2008, 2009. PARP Research Group. 00003 * <http://perception.inf.um.es> 00004 * University of Murcia, Spain. 00005 * 00006 * This file is part of the QVision library. 00007 * 00008 * QVision is free software: you can redistribute it and/or modify 00009 * it under the terms of the GNU Lesser General Public License as 00010 * published by the Free Software Foundation, version 3 of the License. 00011 * 00012 * QVision is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 * GNU Lesser General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Lesser General Public 00018 * License along with QVision. If not, see <http://www.gnu.org/licenses/>. 00019 */ 00020 00024 00025 #include <qvmath/qvstatistics.h> 00026 00027 double BhattacharyyaDistance(const QVVector &m1, const QVMatrix &S1, const QVVector &m2, const QVMatrix &S2) 00028 { 00029 QVVector diff = m2-m1; 00030 QVMatrix mS = (S1+S2)/2; 00031 QVMatrix inv = mS.inverse(); 00032 double value = (diff*(inv*diff))/8 + log(mS.det()/sqrt(S1.det()*S2.det()))/2; 00033 return value; 00034 } 00035 00036 QVVector qvLinearRegularizedRegression(const QVMatrix &A, const QVVector &b, const QVMatrix &Gamma) 00037 { 00038 const QVMatrix tikhonovMatrix = (Gamma == QVMatrix())? QVMatrix::identity(A.getCols()): Gamma; 00039 return pseudoInverse(A.transpose()*A + tikhonovMatrix)*A.transpose() * b; 00040 } |