// This file is part of libigl, a simple c++ geometry processing library. // // Copyright (C) 2013 Alec Jacobson // // This Source Code Form is subject to the terms of the Mozilla Public License // v. 2.0. If a copy of the MPL was not distributed with this file, You can // obtain one at http://mozilla.org/MPL/2.0/. #include "matlab_format.h" #include "STR.h" #include "find.h" template IGL_INLINE const Eigen::WithFormat< DerivedM > igl::matlab_format( const Eigen::DenseBase & M, const std::string name) { using namespace std; string prefix = ""; if(!name.empty()) { prefix = name + " = "; } return M.format(Eigen::IOFormat( Eigen::FullPrecision, 0, " ", "\n", "", "", // This seems like a bit of a hack since I would expect the rows to align // with out this extra spacing on the first line prefix + "[\n ", "\n];")); } template IGL_INLINE const std::string igl::matlab_format( const Eigen::SparseMatrix & S, const std::string name) { using namespace Eigen; using namespace std; Matrix::Scalar,Dynamic,1> I,J,V; Matrix SIJV; find(S,I,J,V); I.array() += 1; J.array() += 1; SIJV.resize(V.rows(),3); SIJV << I,J,V; string prefix = ""; string suffix = ""; if(!name.empty()) { prefix = name + "IJV = "; suffix = "\n"+name + " = sparse("+name+"IJV(:,1),"+name+"IJV(:,2),"+name+"IJV(:,3),"+std::to_string(S.rows())+","+std::to_string(S.cols())+" );"; } return STR(""<< SIJV.format(Eigen::IOFormat( Eigen::FullPrecision, 0, " ", "\n", "", "", // This seems like a bit of a hack since I would expect the rows to align // with out this extra spacing on the first line prefix + "[\n ", "\n];"))< > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); #if EIGEN_VERSION_AT_LEAST(3,3,0) #else template Eigen::WithFormat, Eigen::Matrix const> > const igl::matlab_format, Eigen::Matrix const> >(Eigen::DenseBase, Eigen::Matrix const> > const&, std::basic_string, std::allocator >); template Eigen::WithFormat, Eigen::ArrayWrapper const> const> > const igl::matlab_format, Eigen::ArrayWrapper const> const> >(Eigen::DenseBase, Eigen::ArrayWrapper const> const> > const&, std::basic_string, std::allocator >); template Eigen::WithFormat, Eigen::ArrayWrapper > const> > const igl::matlab_format, Eigen::ArrayWrapper > const> >(Eigen::DenseBase, Eigen::ArrayWrapper > const> > const&, std::basic_string, std::allocator >); template Eigen::WithFormat, Eigen::ArrayWrapper > const> > const igl::matlab_format, Eigen::ArrayWrapper > const> >(Eigen::DenseBase, Eigen::ArrayWrapper > const> > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat, -1, -1, false> > > const igl::matlab_format, -1, -1, false> > >(Eigen::DenseBase, -1, -1, false> > > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > > const igl::matlab_format > >(Eigen::DenseBase > > const&, std::basic_string, std::allocator >); #endif template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template std::basic_string, std::allocator > const igl::matlab_format(Eigen::SparseMatrix const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::string); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); template Eigen::WithFormat > const igl::matlab_format >(Eigen::DenseBase > const&, std::basic_string, std::allocator >); #endif