C++调用MATLAB引擎的问题.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C调用MATLAB引擎的问题

VC++调用MATLAB引擎的问题,怎样把编辑框中的数据传输到MATLAB中并计算? 2010-9-10 09:38 提问者: kxn0831 | 浏览次数:922次 比如说做个简单的加法,三个编辑框,编辑框变量分别为:m_m1,m_m2,m_result,请问加什么语句可以实现以上的功能?有个小程序是错的希望指正,可能错的都离谱了,见笑。 void CMATLABEngineDlg::OnMATLABEngine() { Engine *ep; MessageBox(单击确定按钮,Windows正在准备启动Matlab引擎!,Matlab引擎 , MB_OK | MB_ICONINFORMATION); if (!(ep=engOpen(\0))) //打开Matlab引擎 { fprintf(stderr, \n Matlab引擎启动失败!\n); MessageBox(Matlab引擎启动失败!,Matlab引擎 , MB_OK |MB_ICONERROR); exit(-1); } UpdateData(true); //将矩阵变量写入Matlab引擎的工作区 engPutVariable(ep,m_m1,m_m1); //通过Matlab引擎执行Matlab命令 engEvalString(ep,m_result=m_m1+m_m2); UpdateData(false); MessageBox(关闭Matlab引擎,系统将退出Matlab应用程序!,Matlab引擎, MB_OK | MB_ICONINFORMATION); engClose(ep); // TODO: Add your control notification handler code here } 这个错误显示是:D:\Program Files\Microsoft Visual Studio\MyProjects\MATLABEngine\MATLABEngineDlg.cpp(198) : error C2664: engPutVariable : cannot convert parameter 3 from double to const struct mxArray_tag * There is no context in which this conversion is possible 执行 cl.exe 时出错. 十分感谢,您的帮助! 问题补充: 谢谢一楼的回答,我的基础比较差,我用了你提供的方法,还是无法得到满意的结果,请看: mxArray *T=NULL,*P=NULL,*Q=NULL; double score; // form matrix T=mxCreateDoubleMatrix(1,1,mxREAL); memcpy((void*)mxGetPr(T),(void*)score,sizeof(score)); P=mxCreateDoubleMatrix(1,1,mxREAL); memcpy((void*)mxGetPr(P),(void*)score,sizeof(score)); Q=mxCreateDoubleMatrix(1,1,mxREAL); memcpy((void*)mxGetPr(Q),(void*)score,sizeof(score)); //Write into MATLAB Engine Work area *T=m_m1; *P=m_m2; *Q=m_result; engPutVariable(ep,T,T); engPutVariable(ep,P,P); engPutVariable(ep,Q,Q); UpdateData(true); //将矩阵变量写入Matlab引擎的工作区 engEvalString(ep,Q=P+T); //释放矩阵变量T占用的内存空间 UpdateData(false); mxDestroyArray(T); mxDestroyArray(P); mxDestroyArray(Q); 您看还需要添加些什么呢?现在提示的错误是: error C2440: type cast : cannot convert from double to void * error C2582: mxArray_tag : operator = function is unavailable 我来帮他解答 输入内容已经达到长度限制 还能输入?9999?字 插入图片删

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档