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++内容请搜索靠谱客的其他文章。
发表评论 取消回复