|
@@ -1,84 +0,0 @@
|
|
|
-/**
|
|
|
-* @file Kernel.cpp
|
|
|
-* @brief Interface for Mercer Kernels
|
|
|
-* @author Erik Rodner
|
|
|
-* @date 10/24/2007
|
|
|
-
|
|
|
-*/
|
|
|
-
|
|
|
-#include <iostream>
|
|
|
-
|
|
|
-#include "vislearning/math/distances/Kernel.h"
|
|
|
-
|
|
|
-using namespace OBJREC;
|
|
|
-
|
|
|
-using namespace std;
|
|
|
-using namespace NICE;
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-Kernel::Kernel( bool _symmetric )
|
|
|
-{
|
|
|
- symmetric = _symmetric;
|
|
|
-}
|
|
|
-
|
|
|
-Kernel::~Kernel()
|
|
|
-{
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-void Kernel::calcGramMatrix ( const VVector & vecSet, NICE::Matrix & G ) const
|
|
|
-{
|
|
|
- G.resize(vecSet.size(), vecSet.size());
|
|
|
- if ( symmetric )
|
|
|
- {
|
|
|
- int ii = 0;
|
|
|
- for ( VVector::const_iterator i = vecSet.begin();
|
|
|
- i != vecSet.end();
|
|
|
- i++, ii++ )
|
|
|
- {
|
|
|
- const NICE::Vector & x = *i;
|
|
|
- int jj = ii;
|
|
|
- for ( VVector::const_iterator j = i;
|
|
|
- j != vecSet.end();
|
|
|
- j++, jj++ )
|
|
|
- {
|
|
|
- const NICE::Vector & y = *j;
|
|
|
- double kval = K(x,y);
|
|
|
- G(ii, jj) = kval;
|
|
|
- G(jj, ii) = kval;
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- int ii = 0;
|
|
|
- for ( VVector::const_iterator i = vecSet.begin();
|
|
|
- i != vecSet.end();
|
|
|
- i++, ii++ )
|
|
|
- {
|
|
|
- const NICE::Vector & x = *i;
|
|
|
- int jj = 0;
|
|
|
- for ( VVector::const_iterator j = vecSet.begin();
|
|
|
- j != vecSet.end();
|
|
|
- j++, jj++ )
|
|
|
- {
|
|
|
- const NICE::Vector & y = *j;
|
|
|
- double kval = K(x,y);
|
|
|
- G(ii, jj) = kval;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-void Kernel::calcKernelVector ( const VVector & vecSet, const NICE::Vector & y, NICE::Vector & kstar ) const
|
|
|
-{
|
|
|
- kstar.resize(vecSet.size());
|
|
|
- int ii = 0;
|
|
|
- for ( VVector::const_iterator i = vecSet.begin();
|
|
|
- i != vecSet.end();
|
|
|
- i++, ii++ )
|
|
|
- {
|
|
|
- const NICE::Vector & x = *i;
|
|
|
- double kval = K(x, y);
|
|
|
- kstar[ii] = kval;
|
|
|
- }
|
|
|
-}
|