#include <octave/oct.h> #include <mex.h> // conversions from Matlab mxArray* to Octave data types Matrix mtt_Matrix (const mxArray *m) { const unsigned long int nrows = mxGetM (m); const unsigned long int ncols = mxGetN (m); Matrix o (nrows, ncols); const double *p = mxGetPr (m); for (unsigned long int row = 0; row < nrows; row++) for (unsigned long int col = 0; col < ncols; col++) o (row, col) = p[row + nrows*col]; return (o); } ColumnVector mtt_ColumnVector (const mxArray *m) { const unsigned long int nrows = mxGetM (m); ColumnVector o (nrows); const double *p = mxGetPr (m); for (unsigned long int row = 0; row < nrows; row++) o (row) = p[row]; return (o); } const double mtt_double (const mxArray *m) { const double *p = mxGetPr (m); return (*p); } // conversions from Octave data types to Matlab mxArray* mxArray * mtt_mxArray (const Matrix &o) { const unsigned long int nrows = o.rows (); const unsigned long int ncols = o.columns (); mxArray *m; m = mxCreateDoubleMatrix (nrows, ncols, mxREAL); double *p = mxGetPr (m); for (unsigned long int row = 0; row < nrows; row++) for (unsigned long int col = 0; col < ncols; col++) p [row + nrows*col] = o (row, col); return (m); } mxArray * mtt_mxArray (const ColumnVector &o) { const unsigned long int nrows = o.length (); mxArray *m; m = mxCreateDoubleMatrix (nrows, 1, mxREAL); double *p = mxGetPr (m); for (unsigned long int row = 0; row < nrows; row++) p [row] = o (row); return (m); }