| 查看: 1305 | 回复: 9 | ||
one包金虫 (小有名气)
|
[求助]
vc++ 调用MATLAB 引擎 已有1人参与
|
|
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(); 为啥输出的结果不对呢? |
» 猜你喜欢
求助:我三月中下旬出站,青基依托单位怎么办?
已经有11人回复
不自信的我
已经有12人回复
假如你的研究生提出不合理要求
已经有5人回复
所感
已经有4人回复
论文终于录用啦!满足毕业条件了
已经有28人回复
要不要辞职读博?
已经有7人回复
北核录用
已经有3人回复
实验室接单子
已经有3人回复
磺酰氟产物,毕不了业了!
已经有8人回复
26申博(荧光探针方向,有机合成)
已经有4人回复
» 本主题相关价值贴推荐,对您同样有帮助:

wake_up
木虫 (著名写手)
- 应助: 124 (高中生)
- 金币: 4001.5
- 散金: 1654
- 红花: 24
- 帖子: 1113
- 在线: 424.2小时
- 虫号: 670119
- 注册: 2008-12-08
- 性别: GG
- 专业: 医学图像数据处理与分析

2楼2015-11-11 22:44:28
one包
金虫 (小有名气)
- 应助: 0 (幼儿园)
- 金币: 365.7
- 帖子: 73
- 在线: 67.4小时
- 虫号: 1431879
- 注册: 2011-10-08
- 性别: GG
- 专业: 工程热物理相关交叉领域

3楼2015-11-11 23:00:22
wake_up
木虫 (著名写手)
- 应助: 124 (高中生)
- 金币: 4001.5
- 散金: 1654
- 红花: 24
- 帖子: 1113
- 在线: 424.2小时
- 虫号: 670119
- 注册: 2008-12-08
- 性别: GG
- 专业: 医学图像数据处理与分析
【答案】应助回帖
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
one包: 金币+20, ★★★★★最佳答案 2015-11-12 09:04:17
one包: 金币+20, ★★★★★最佳答案 2015-11-12 09:04:17
|
这样看上去没有什么问题. 是不是从内存空间取数的时候出问题了? memcpy((void*)arResData, (void*)mxGetPr(B), sizeof(arResData)); // 释放矩阵变量空间 mxDestroyArray(A); mxDestroyArray(B); 你把matlab engine那个屏蔽掉. 单独测一下你C语言IO写文件看看能不能写进去.如果能写进去,就是取matlab那里出问题了. |

4楼2015-11-11 23:32:45
one包
金虫 (小有名气)
- 应助: 0 (幼儿园)
- 金币: 365.7
- 帖子: 73
- 在线: 67.4小时
- 虫号: 1431879
- 注册: 2011-10-08
- 性别: GG
- 专业: 工程热物理相关交叉领域

5楼2015-11-12 08:39:46
wake_up
木虫 (著名写手)
- 应助: 124 (高中生)
- 金币: 4001.5
- 散金: 1654
- 红花: 24
- 帖子: 1113
- 在线: 424.2小时
- 虫号: 670119
- 注册: 2008-12-08
- 性别: GG
- 专业: 医学图像数据处理与分析

6楼2015-11-12 08:46:57
one包
金虫 (小有名气)
- 应助: 0 (幼儿园)
- 金币: 365.7
- 帖子: 73
- 在线: 67.4小时
- 虫号: 1431879
- 注册: 2011-10-08
- 性别: GG
- 专业: 工程热物理相关交叉领域

7楼2015-11-12 09:03:30
one包
金虫 (小有名气)
- 应助: 0 (幼儿园)
- 金币: 365.7
- 帖子: 73
- 在线: 67.4小时
- 虫号: 1431879
- 注册: 2011-10-08
- 性别: GG
- 专业: 工程热物理相关交叉领域

8楼2015-11-12 11:36:25
wake_up
木虫 (著名写手)
- 应助: 124 (高中生)
- 金币: 4001.5
- 散金: 1654
- 红花: 24
- 帖子: 1113
- 在线: 424.2小时
- 虫号: 670119
- 注册: 2008-12-08
- 性别: GG
- 专业: 医学图像数据处理与分析

9楼2015-11-12 11:39:11
one包
金虫 (小有名气)
- 应助: 0 (幼儿园)
- 金币: 365.7
- 帖子: 73
- 在线: 67.4小时
- 虫号: 1431879
- 注册: 2011-10-08
- 性别: GG
- 专业: 工程热物理相关交叉领域

10楼2015-11-12 11:43:56












;
回复此楼