bool readMatrixFromFile(const std::string & filename, boost::numeric::ublas::compressed_matrix<TYPE> & matrix) { std::cout << "Reading ublas matrix" << std::endl; std::ifstream file(filename.c_str()); if (!file) return false; std::string id; file >> id; if (id != "Matrix") return false; unsigned int num_rows, num_columns; file >> num_rows >> num_columns; if (num_rows != num_columns) return false; matrix.resize(num_rows, num_rows, false); for (unsigned int row = 0; row < num_rows; ++row) { int num_entries; file >> num_entries; for (int j = 0; j < num_entries; ++j) { unsigned int column; TYPE element; file >> column >> element; //matrix.insert_element(row, column, element); matrix(row, column) = element; } } return true; }
void resize(boost::numeric::ublas::compressed_matrix<ScalarType> & matrix, size_t rows, size_t cols) { matrix.resize(rows, cols, false); //Note: omitting third parameter leads to compile time error (not implemented in ublas <= 1.42) }