Я пытаюсь передать переменную z = 100
из C++ в Matlab для дальнейшей обработки (это очень упрощенный пример). Я в основном хочу, чтобы это было передано как глобальная переменная, так что я могу получить доступ к этой переменной из любой функции Matlab (возможно, отправлен в рабочую область Matlab).Передача переменной из C++ в Matlab (Workspace)
Вот мой C++ код (я использую двигатель Matlab изнутри C++):
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/opencv.hpp"
#include <iostream>
#include <math.h>
#include <fstream>
#include <stdio.h>
#include <Windows.h>
#include "engine.h"
#include <engine.h>
//#include <cmath>
#define _USE_MATH_DEFINES
#pragma comment (lib, "libmat.lib")
#pragma comment (lib, "libmx.lib")
#pragma comment (lib, "libmex.lib")
#pragma comment (lib, "libeng.lib")
using namespace cv;
using namespace std;
int main (int argc, char* argv[])
{
Engine *ep = engOpen(NULL);
int z;
mxArray *z_array = mxCreateDoubleMatrix(1,1,mxREAL);
double *pz = mxGetPr(z_array);
z = 100;
engPutVariable(ep, "z", z_array);
engClose(ep);
return 0;
}
Когда этот код завершения выполнения, я открываю Matlab и попытаться получить доступ к переменной z
но Безразлично» t существует. Здесь что-то не хватает? (Я также попытался вставить engEvalString(ep, "global z; disp(z);");
после engPutVariable
, но это не помогает.
Я оценил бы любую проницательность вы могли бы быть в состоянии дать мне. Спасибо!
Спасибо за ответ! Сначала я думал об одном и том же; однако, если я удалю engClose (ep); окно команд Matlab остается открытым, но если я запустил Matlab, в рабочей области или где-либо еще нет переменной с именем z. – MSTTm
Ahh yes I see - теперь возвращается z = 100 из командной строки. Спасибо! Однако есть ли способ получить доступ к этому значению из функции Matlab? Когда я открываю Matlab, в рабочей области нет значения z. – MSTTm
Я не уверен, чтобы понять ваш вопрос, если вы закрываете сессию Matlab, z тоже исчезнет. Чтобы получить доступ к рабочему пространству из функции Matlab, вы можете использовать команду evalin. Например: z = evalin ('base', 'z'); – oro777