1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- /**
- * @file Kernel.cpp
- * @brief Interface for Mercer Kernels
- * @author Erik Rodner
- * @date 10/24/2007
- */
- #ifdef NOVISUAL
- #include <vislearning/nice_nonvis.h>
- #else
- #include <vislearning/nice.h>
- #endif
- #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;
- }
- }
|