#include <octave/oct.h> #include <octave/variables.h> #ifdef STANDALONE static Matrix MTT_data; #endif DEFUN_DLD (mtt_write, args, , "append current data to output") { const double t = args(0).double_value (); #ifdef OCTAVE_DEV const ColumnVector x = args(1).column_vector_value (); const ColumnVector y = args(2).column_vector_value (); #else const ColumnVector x = args(1).vvector_value (); const ColumnVector y = args(2).vector_value (); #endif const int nx = x.length (); const int ny = y.length (); ColumnVector Output (2+nx+ny, 0.0); Output (0) = Output (1+nx) = t; Output.insert (x.transpose (), 1); Output.insert (y.transpose (), 2+nx); Matrix data; if (0.0 == t) { data = static_cast<Matrix> (Output.transpose ()); } else { #ifdef STANDALONE data = MTT_data.transpose (); #else data = get_global_value ("MTT_data").matrix_value ().transpose (); #endif data = data.append (Output); } data = data.transpose (); #ifdef STANDALONE MTT_data = data; cout << Output.transpose () << endl; #else set_global_value ("MTT_data", data); #endif return data; }