获得Matlab的最佳方式< - > C ++接口

时间:2011-06-28 12:58:47

标签: c++ matlab interface

我有一个C ++ Windows程序,我想在现有的Matlab程序中转换和可视化来自这个C ++应用程序的一些数据。

目前我正在将C ++应用程序中的数据写入文件。同时,Matlab应用程序读取文件并处理数据。 (轮询)它基本上可以工作,但是当数据负载变高时我遇到了性能问题。

在这些程序之间传输数据的最佳解决方案是什么?我在考虑一种消息队列或套接字接口。

2 个答案:

答案 0 :(得分:5)

Use the Matlab API将您的数据从C ++发送到Matlab,然后对其执行绘图命令。 粗略地说,执行以下操作 - 没有错误检查,但要点是:

#include <engine.h>
//open the engine
Engine *m_engine;
m_engine = engOpen("\0");

//put our data
//pretend this is a 2 column, n row matrix, so we can do a 2D plot
mxArray* mx = mxCreateDoubleMatrix(mat->n_rows, mat->n_cols, mxREAL);
memcpy(mxGetPr(mx),some_data,data->n_elem*sizeof(double));
put("data",mx);
mxDestroyArray(mx);

//plot
engEvalString(m_engine, "plot(data(:,1),data(:,2),'-o')");

请记住,Matlab在专业列中工作,而C ++是行专业。

答案 1 :(得分:0)

最好的方法是使用C / C ++代码中的MATLAB引擎。您所要做的就是从C / C ++程序调用MATLAB引擎,然后您可以直接从C / C ++程序轻松执行MATLAB命令。

请注意,您必须将MATLAB的其他库文件包含在项目中,以便工作。您可以查看与here所示相同的工作示例。