1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #include <iostream>
- #include "CachedQuadraticDistances.h"
- using namespace std;
- using namespace NICE;
- using namespace OBJREC;
- void CachedQuadraticDistances::calcKernelData ( const VVector & vecSet, KernelData *kernelData ) const
- {
-
- Matrix *quadraticDistances = new Matrix ( vecSet.size(), vecSet.size() );;
-
- 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 distance = 0.0;
- for ( size_t k = 0 ; k < x.size() ; k++ )
- {
- double diff = x[k] - y[k];
- distance += diff*diff;
- }
- (*quadraticDistances)(ii, jj) = distance;
- (*quadraticDistances)(jj, ii) = distance;
- }
- }
- kernelData->setCachedMatrix ( KernelData::QUADRATIC_DISTANCES, quadraticDistances );
- Kernel::calcKernelData ( vecSet, kernelData );
- }
|