1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /**
- * @file scaleKernelMatrix.cpp
- * @brief scale a kernel matrix
- * @author Erik Rodner
- * @date 12/21/2009
- */
- #include "core/basics/Config.h"
- #include "core/vector/MatrixT.h"
- using namespace std;
- using namespace NICE;
- /**
-
- scale a kernel matrix
-
- */
- int main (int argc, char **argv)
- {
- #ifndef __clang__
- #ifndef __llvm__
- std::set_terminate(__gnu_cxx::__verbose_terminate_handler);
- #endif
- #endif
- Config conf ( argc, argv );
-
- string kernel_in = conf.gS("main", "kernel_in");
- string kernel_out = conf.gS("main", "kernel_out");
-
- Vector labels;
- Matrix kernelMatrix;
- ifstream ifs ( kernel_in.c_str(), ios::in );
- if ( ! ifs.good() )
- fthrow(Exception, "Unable to read kernel matrix from " << kernel_in );
- ifs >> kernelMatrix;
- ifs >> labels;
- ifs.close();
- if ( kernelMatrix.cols() != kernelMatrix.rows() )
- {
- fthrow(Exception, "Kernel matrix is not quadratic!");
- }
- Matrix kernelMatrixScaled ( kernelMatrix.cols(), kernelMatrix.rows() );
-
- for ( uint i = 0 ; i < kernelMatrix.cols(); i++ )
- for ( uint j = 0 ; j < kernelMatrix.rows(); j++ )
- {
- double K_ii = kernelMatrix(i,i);
- double K_jj = kernelMatrix(j,j);
- kernelMatrixScaled(i,j) = kernelMatrix(i,j) / sqrt(K_ii * K_jj);
- }
- ofstream ofs ( kernel_out.c_str(), ios::out );
- if ( ! ofs.good() )
- fthrow(Exception, "Unable to write kernel matrix to " << kernel_out );
- ofs << kernelMatrixScaled;
- ofs << labels;
- ofs.close();
-
- return 0;
- }
|