【发布时间】:2015-10-21 05:48:37
【问题描述】:
我正在尝试将变量 z = 100 从 C++ 传递到 Matlab 以进行进一步处理(这只是一个非常简化的示例)。我基本上希望将其作为全局变量传递,以便我可以从任何 Matlab 函数访问此变量(可能发送到 Matlab 工作区)。
这是我的 C++ 代码(我在 C++ 中使用 Matlab 引擎):
#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,但它不存在。我在这里缺少什么吗? (我也试过在engPutVariable 之后插入engEvalString(ep, "global z; disp(z);");,但这没有帮助。
如果您能给我提供任何见解,我将不胜感激。谢谢!
【问题讨论】:
标签: c++ matlab variables parameter-passing