// The contents of this file are in the public domain. See LICENSE_FOR_EXAMPLE_PROGRAMS.txt #include "call_matlab.h" #include "dlib/matrix.h" using namespace dlib; using namespace std; /* This mex function takes a MATLAB struct, prints a few of its fields, and then returns a new struct. For example, you can call this function in MATLAB like so: input = {} input.val = 2 input.stuff = 'some string' output = example_mex_struct(input) output.number output.number2 output.sub.stuff output.sub.some_matrix */ void mex_function ( const matlab_struct& input, matlab_struct& output ) { int val = input["val"]; string stuff = input["stuff"]; if (input.has_field("val2")) { string val2 = input["val2"]; cout << "The optional val2 field was set to: " << val2 << endl; } cout << "val: "<< val << endl; cout << "stuff: " << stuff << endl; output["number"] = 999; output["number2"] = 1000; output["sub"]["stuff"] = "some other string"; matrix<double> m = randm(2,2); output["sub"]["some_matrix"] = m; } // #including this brings in all the mex boiler plate needed by MATLAB. #include "mex_wrapper.cpp"