获取Matlab的最佳方法<-&燃气轮机;C++;接口 我有一个C++的Windows程序,我想在现有的MATLAB程序中转换和可视化这个C++程序的一些数据。 目前我正在把C++应用程序的数据写入文件中。同时,Matlab应用程序读取文件并处理数据。(轮询)它基本上可以工作,但当数据负载达到高位时,我会遇到性能问题

获取Matlab的最佳方法<-&燃气轮机;C++;接口 我有一个C++的Windows程序,我想在现有的MATLAB程序中转换和可视化这个C++程序的一些数据。 目前我正在把C++应用程序的数据写入文件中。同时,Matlab应用程序读取文件并处理数据。(轮询)它基本上可以工作,但当数据负载达到高位时,我会遇到性能问题,c++,matlab,interface,C++,Matlab,Interface,在这些程序之间传输数据的最佳解决方案是什么?我正在考虑一种消息队列或套接字接口。< /P> < P>将您的数据从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

在这些程序之间传输数据的最佳解决方案是什么?我正在考虑一种消息队列或套接字接口。< /P> < P>将您的数据从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')");
#包括
//打开发动机
引擎*m_引擎;
m_engine=engOpen(“\0”);
//把我们的数据
//假设这是一个2列n行的矩阵,这样我们就可以做一个2D绘图了
mxArray*mx=mxCreateDoubleMatrix(mat->n_行,mat->n_列,mxREAL);
memcpy(mxGetPr(mx),一些数据,数据->n元素*sizeof(double));
put(“数据”,mx);
mx阵列(mx);
//密谋
Engelastring(m_engine,“绘图(数据(:,1),数据(:,2),'-o')”;

请记住,MATLAB在列主元中工作,而C++是行的主元。 最好的方法是使用C/C++代码中的MATLAB引擎。您所要做的就是从C/C++程序中调用MATLAB引擎,然后可以轻松地直接从C/C++程序中执行MATLAB命令


请注意,您将不得不在项目中包含其他MATLAB库文件,以使其正常工作。您可以查看一个工作示例,如图所示。

此链接是否有帮助?还有这个:关于套接字编程:Matlab文件交换中也有一些文件可以帮助您:尽管我认为