// Tests the MatrixFloat type TEST(DynamicType, MatrixFloatTest) { DynamicType type; MatrixFloat a(3,1); a[0][0] = 1.1; a[1][0] = 1.2; a[2][0] = 1.3; EXPECT_TRUE( type.set( a ) ); MatrixFloat b = type.get< MatrixFloat >(); EXPECT_EQ( a.getSize(), b.getSize() ); EXPECT_EQ( a.getNumRows(), b.getNumRows() ); EXPECT_EQ( a.getNumCols(), b.getNumCols() ); for(unsigned int i=0; i<a.getNumRows(); i++){ for(unsigned int j=0; j<a.getNumCols(); j++){ EXPECT_EQ( a[i][j], b[i][j] ); } } }
bool TimeSeriesClassificationData::loadDatasetFromCSVFile(const std::string &filename){ numDimensions = 0; datasetName = "NOT_SET"; infoText = ""; //Clear any previous data clear(); //Parse the CSV file FileParser parser; if( !parser.parseCSVFile(filename,true) ){ errorLog << "loadDatasetFromCSVFile(const std::string &filename) - Failed to parse CSV file!" << std::endl; return false; } if( !parser.getConsistentColumnSize() ){ errorLog << "loadDatasetFromCSVFile(const std::string &filename) - The CSV file does not have a consistent number of columns!" << std::endl; return false; } if( parser.getColumnSize() <= 2 ){ errorLog << "loadDatasetFromCSVFile(const std::string &filename) - The CSV file does not have enough columns! It should contain at least three columns!" << std::endl; return false; } //Set the number of dimensions numDimensions = parser.getColumnSize()-2; //Reserve the memory for the data data.reserve( parser.getRowSize() ); UINT sampleCounter = 0; UINT lastSampleCounter = 0; UINT classLabel = 0; UINT j = 0; UINT n = 0; VectorFloat sample(numDimensions); MatrixFloat timeseries; for(UINT i=0; i<parser.getRowSize(); i++){ sampleCounter = grt_from_str< UINT >( parser[i][0] ); //Check to see if a new timeseries has started, if so then add the previous time series as a sample and start recording the new time series if( sampleCounter != lastSampleCounter && i != 0 ){ //Add the labelled sample to the dataset if( !addSample(classLabel, timeseries) ){ warningLog << "loadDatasetFromCSVFile(const std::string &filename,const UINT classLabelColumnIndex) - Could not add sample " << i << " to the dataset!" << std::endl; } timeseries.clear(); } lastSampleCounter = sampleCounter; //Get the class label classLabel = grt_from_str< UINT >( parser[i][1] ); //Get the sample data j=0; n=2; while( j != numDimensions ){ sample[j++] = grt_from_str< Float >( parser[i][n] ); n++; } //Add the sample to the timeseries timeseries.push_back( sample ); } if ( timeseries.getSize() > 0 ) //Add the labelled sample to the dataset if( !addSample(classLabel, timeseries) ){ warningLog << "loadDatasetFromCSVFile(const std::string &filename,const UINT classLabelColumnIndex) - Could not add sample " << parser.getRowSize()-1 << " to the dataset!" << std::endl; } return true; }