// 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"