我是靠谱客的博主 无奈发卡,这篇文章主要介绍调用matlab引擎,vc++ 调用MATLAB 引擎 - 程序语言 - 小木虫 - 学术 科研 互动社区,现在分享给大家,希望可以做个参考。

vc++ 中的指针 数组的数据怎么写入到MATLAB中去啊,写入后输出的结果老不对,是为什么呢?是按着网上double[][]这样的矩阵弄得,谢谢

int  j = 0,w = 0;//其中(xNG = new double[NG];是个指针数组)

// 状态变量

int nStatus = 0;

// 定义MATLAB引擎指针

Engine *ep;

// 定义mxArray变量指针

mxArray *A, *B;

// 定义矩阵数组

double arResData[3];

// 打开MATLAB引擎

ep = engOpen(NULL);

if(ep == NULL)

{

cout<<"无法打开MATLAB引擎。"<<endl;

exit(EXIT_FAILURE);

}

// 是否显示MATLAB窗口:true-显示;false-隐藏。

nStatus = engSetVisible(ep, true);

if (nStatus != 0)

{

cout << "设置MATLAB显示属性失败。" << endl;

exit(EXIT_FAILURE);

}

// 为mxArray变量分配空间

A = mxCreateDoubleMatrix(3,1,mxREAL);

B = mxCreateDoubleMatrix(3,1,mxREAL);

if(A == NULL || B == NULL)

{

cout<<"为mxArray变量分配空间失败。"<<endl;

exit(EXIT_FAILURE);

}

// 将数组中的数据写入到mxArray空间中

memcpy((void*)mxGetPr(A), (void*)xNG, sizeof(xNG));//

// 将矩阵变量A写入到MATLAB引擎空间

nStatus = engPutVariable(ep, "A", A);

// 执行引擎命令求矩阵A的逆矩阵

nStatus = engEvalString(ep, "B=1*(A)"

// 从MATLAB引擎空间中读取执行结果

B = engGetVariable(ep, "B"

// 将矩阵变量B复制到数组arResData中

memcpy((void*)arResData, (void*)mxGetPr(B), sizeof(arResData));

// 释放矩阵变量空间

mxDestroyArray(A);

mxDestroyArray(B);

// 关闭MATLAB引擎

engClose(ep);

char pFileName[ 50 ];

char Buffer[ 5 ];

//double m;

sprintf( pFileName, "%s", "baobao" );

strcat( pFileName, ".dat" );

CStdioFile f1;

f1.Open( pFileName, CFile::modeCreate|CFile::modeWrite|CFile::typeText );

char szBuffer[ 500 ];

for( w = 0; w < 3; w++)

{

sprintf( szBuffer, "%16.8f", arResData[w]);

f1.Write( szBuffer, strlen( szBuffer ) );

}

f1.Close();

为啥输出的结果不对呢?

最后

以上就是无奈发卡最近收集整理的关于调用matlab引擎,vc++ 调用MATLAB 引擎 - 程序语言 - 小木虫 - 学术 科研 互动社区的全部内容,更多相关调用matlab引擎,vc++内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(126)

评论列表共有 0 条评论

立即
投稿
返回
顶部