readMatrix.C
Go to the documentation of this file.00001
00002
00003
00004
00005
00006 #include "VFAT/readMatrix.H"
00007
00008 #include "Util/log.H"
00009 #include "Util/readConfig.H"
00010
00011 #include <iostream>
00012 #include <fstream>
00013 #include <string>
00014
00015 readMatrix::readMatrix(const char* fileName)
00016 {
00017 int row = 0;
00018 bool firstLine = false;
00019 bool comment = false;
00020 std::vector<std::vector<double> >::iterator rowIter;
00021 std::vector<double>::iterator columnIter;
00022 std::ifstream inFile(fileName,std::ios::in);
00023 std::string in;
00024 LINFO("LOAD MATRIX %s",fileName);
00025 while (inFile >> in)
00026 {
00027 if(!in.compare("#"))
00028 {
00029 if(!comment)
00030 {
00031 comment = true;
00032 }
00033 else
00034 {
00035 comment = false;
00036 }
00037 }
00038 if((!comment) && in.compare("#"))
00039 {
00040
00041
00042 if(firstLine == false)
00043 {
00044 sizeX = (int)atof(in.c_str());
00045 inFile >> in;
00046 sizeY = (int)atof(in.c_str());
00047 firstLine = true;
00048 std::vector<double> tvec(sizeX,0.0F);
00049 vectorIn.resize(sizeY,tvec);
00050 rowIter = vectorIn.begin();
00051 columnIter = rowIter->begin();
00052 }
00053 else
00054 {
00055 *columnIter = atof(in.c_str());
00056 ++columnIter;
00057
00058 if(columnIter == rowIter->end())
00059 {
00060 row++;
00061 ++rowIter;
00062 if(row < sizeY)
00063 columnIter = rowIter->begin();
00064
00065 }
00066 }
00067 }
00068 }
00069 }
00070
00071 readMatrix::~readMatrix()
00072 {}
00073
00074 std::vector<std::vector<double> > readMatrix::returnMatrix()
00075 {
00076 return vectorIn;
00077 }
00078
00079 Image<float> readMatrix::returnMatrixAsImage()
00080 {
00081 std::vector<std::vector<double> >::iterator rowIter;
00082 std::vector<double>::iterator columnIter;
00083 Image<float> intermed;
00084 intermed.resize(sizeY,sizeX);
00085 int x = 0;
00086 for(rowIter = vectorIn.begin(); rowIter != vectorIn.end(); ++rowIter, x++)
00087 {
00088 int y = 0;
00089 for(columnIter = rowIter->begin(); columnIter != rowIter->end();
00090 ++columnIter, y++)
00091 {
00092 float whatthefuck;
00093 whatthefuck = *columnIter;
00094 intermed.setVal(x,y,whatthefuck);
00095 }
00096 }
00097 outImage = intermed;
00098 return outImage;
00099 }
00100
00101 void readMatrix::echoMatrix()
00102 {
00103 std::vector<std::vector<double> >::iterator rowIter;
00104 std::vector<double>::iterator columnIter;
00105 for(rowIter = vectorIn.begin(); rowIter != vectorIn.end(); ++rowIter)
00106 {
00107 for(columnIter = rowIter->begin(); columnIter != rowIter->end();
00108 ++columnIter)
00109 {
00110 std::cerr << *columnIter << " ";
00111 }
00112 std::cerr << "\n";
00113 }
00114 }
00115