21 #include <octave/config.h>
22 #include <octave/octave.h>
23 #include <octave/oct-obj.h>
24 #include <octave/oct-map.h>
30 extern OCTINTERP_API octave_value_list
31 feval (
const std::string& name,
const octave_value_list& args = octave_value_list (),
int nargout = 0);
35 vector<const char *> argsIn(argc);
36 for (
int i=0; i<argc; i++){
37 argsIn[i]=&args[i][0];
38 cout<<argsIn[i]<<endl;
41 octave_main((
int)argsIn.size(), (
char**)&argsIn[0], embedded);
50 vector<Eigen::Matrix<TYPE, Eigen::Dynamic, Eigen::Dynamic> >
Octave::runM(
const char* commandName, vector<Eigen::Matrix<TYPE, Eigen::Dynamic, Eigen::Dynamic> > &in) {
51 octave_value_list input;
54 input.resize(in.size());
55 for (
int i=0; i<in.size(); i++) {
56 Matrix m(in[i].rows(),in[i].cols());
57 for (
int j=0; j<in[i].rows(); j++)
58 for (
int k=0; k<in[i].cols(); k++)
59 m.elem(j,k)=(double)in[i](j,k);
63 octave_value_list output;
65 output =
feval(
string(commandName), input);
67 vector<Eigen::Matrix<TYPE, Eigen::Dynamic, Eigen::Dynamic> > out(output.length());
68 for (
int i=0; i<out.size(); i++) {
69 Matrix m=output(i).matrix_value();
70 Eigen::Matrix<TYPE, Eigen::Dynamic, Eigen::Dynamic> eigenM(m.rows(),m.columns());
71 for (
int j=0; j<m.rows(); j++)
72 for (
int k=0; k<m.columns(); k++)
73 eigenM(j,k)=(
TYPE)m.elem(j,k);
79 template vector<Eigen::Matrix<float, Eigen::Dynamic, Eigen::Dynamic> >
Octave::runM(
const char* commandName, vector<Eigen::Matrix<float, Eigen::Dynamic, Eigen::Dynamic> > &in);
80 template vector<Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic> >
Octave::runM(
const char* commandName, vector<Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic> > &in);