Octave load

Revision as of 17:02, 30 November 2013 by Rezahousseini (talk | contribs)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

The code below shows an example of how to load a matrix from a file in Octave's binary file format. An example of how to load data from a file in Octave's ascii format can be found in this page.

Code: octave_binary_io_example.cc: C++ function to load a matrix from a BINARY file in Octave native format
#include <fstream>
#include <octave/oct.h>
#include <octave/ov.h>
#include <octave/zfstream.h>
#include <octave/octave.h>
#include <octave/parse.h>
#include <octave/toplev.h>
#include <octave/load-save.h>
#include <octave/ls-oct-binary.h>
#include <octave/oct-map.h>
#include <cstring>

std::fstream file;
std::ios::openmode m = std::ios::in;
load_save_format format = LS_BINARY;
oct_mach_info::float_format flt_fmt = oct_mach_info::flt_fmt_unknown;
bool swap = false;

int main (void)
{
  string_vector argv (1);

  install_types ();  
  argv(0) = std::string ("test_var");

  file.open ("test.bin", m);
  if (read_binary_file_header (file, swap, flt_fmt, true) != 0)
    return -1;

  octave_scalar_map m = do_load (file, "test.bin", format, 
				 flt_fmt, false, swap, true, argv, 
				 0, 1, 1).scalar_map_value ();


  std::cout << m.contents ("test_var").matrix_value ();

  file.close ();
  return 0;

}


To test, type the following in Octave:

>> test_var = randn(5);
>> save -binary test.bin test_var


Compile and run the example with the following commads

$ mkoctfile --link-stand-alone octave_binary_io_example.cc
$ ./a.out