У меня есть код, который обрабатывает кадры в каждой итерации и генерирует матрицу.Моя конечная цель - отправить данные матрицы в Matlab, чтобы изучить эволюцию матрицы с каждым кадром.Для этого я определил статическую переменную Engine в файле заголовка (helper.h).
#include "engine.h";
#include "mex.h";
static Engine *engine;
В программе main () я открываю движок только один раз:
#include helper.h
main(){
if (!(engine = engOpen(NULL))) {
MessageBox ((HWND)NULL, (LPSTR)"Can't start MATLAB engine",(LPSTR) "pcTest.cpp", MB_OK);
exit(-1);}
//here comes frame processing using a while loop
.
. //a function is called (defined in matrix.cpp)
.
//frame processing ends
}
А внутри matrix.cpp я получаю матрицу, которую хочу отправить в Matlab Engine, поэтому я делаю что-то вроде этого:
#include helper.h
mxArray *mat;
mat = mxCreateDoubleMatrix(13, 13, mxREAL);
memcpy(mxGetPr(mat),matrix.data, 13*13*sizeof(double));
engPutVariable(engine, "mat", mat);
Я хочу использовать указатель на engine наиболее эффективным способом.Я немного озадачен тем, как правильно использовать движок matlab.
Любая помощь приветствовалась бы, потому что документация и примеры matlab не помогли вообще, так как они содержат весь код в одном файле и не работают.Не использую итерации.Заранее спасибо.
РЕДАКТИРОВАТЬ
Первая проблема решена с указателем двигателя.Решение объявляет его как внешний.
#include "engine.h";
#include "mex.h";
extern Engine *engine;
и в main.cpp
#include helper.h
Engine *engine=NULL;
main(){}