void load(const char *filename, MatrixBase<Derived>& m) { int nrows, ncols; std::ifstream f(filename, std::ios::binary); f.read(reinterpret_cast<char*>(&nrows), sizeof(int)); f.read(reinterpret_cast<char*>(&ncols), sizeof(int)); m.derived().resize(nrows, ncols); f.read((char*)m.derived().data(), sizeof(typename Derived::Scalar) * nrows * ncols); }
void save(const char *filename, const MatrixBase<Derived>& m) { unsigned int rows = m.rows(), cols = m.cols(); std::ofstream f(filename, std::ios::out | std::ios::binary); f.write((char *)&rows, sizeof(rows)); f.write((char *)&cols, sizeof(cols)); f.write((char *)m.derived().data(), sizeof(typename Derived::Scalar) * rows * cols); f.close(); }
Eigen::Block<Derived> topLeftCorner(MatrixBase<Derived>& m, int rows, int cols) { return Eigen::Block<Derived>(m.derived(), 0, 0, rows, cols); }
Eigen::Block<Derived, 2, 2> topLeft2x2Corner(MatrixBase<Derived>& m) { return Eigen::Block<Derived, 2, 2>(m.derived(), 0, 0); }
void copy_shape(const MatrixBase<Derived>& src, MatrixBase<Derived>& dst) { dst.derived().resize(src.rows(), src.cols()); }
const Eigen::VectorBlock<const Derived> firstTwo(const MatrixBase<Derived>& v) { return Eigen::VectorBlock<const Derived>(v.derived(), 0, 2); }