找回密码
 注册
Simdroid-非首页
查看: 77|回复: 3

C#调用Matlab中的fmincon函数问题(已解决)

[复制链接]
发表于 2012-2-15 21:50:51 | 显示全部楼层 |阅读模式 来自 上海
本帖最后由 Gradient 于 2012-2-16 00:38 编辑

我想通过C#调用Matlab中的fmincon开发一个小程序,采用的方法是建立一个MLApp.MLApp接口的实例 matlabObject,再用matlabObject.Execute("...")的方式执行字符串指令。
测试调用plot函数成功,直接在Matlab中同样输入fmincon可以运行,但是用C#调用fmincon命令时总是不成功,也没有报错。恳请各位大虾深处援手!先谢过了

我在Matlab当前文件夹中放了两个文件作为fmincon的目标函数和约束方程,两个文件分别是:objective.m 和 mycon.m
以下是C#中的有关语句
...
using MathWorks;using MathWorks.MATLAB;using MathWorks.MATLAB.NET.Arrays;using MathWorks.MATLAB.NET.Utility;using MLApp;
...MLApp.MLApp matlabObject = new MLApp.MLApp();
            string command_01 = "xstart = ones(" + dimensionOfX + ",1);"; // xstart = ones(12,1);            matlabObject.Execute(command_01);            string command_03 = "[x,fval,exitflag,output] = fmincon(@objective,xstart,[],[],[],[],[],[],@mycon);";            matlabObject.Execute(command_03);

 楼主| 发表于 2012-2-16 00:38:23 | 显示全部楼层 来自 上海
Simdroid开发平台
经过不懈的摸索,终于发现了原因:这是一个bug!我把目标函数名从objective改成obj,就解决了,而在测试过程中用了其他函数名例如testfun4,会产生无法解释的结果!虽然不是技术问题,但是揭露了一个藏的很深的bug,希望能够保留此帖给其他有相似遭遇的童鞋参考。
回复 不支持

使用道具 举报

发表于 2012-2-16 08:52:13 | 显示全部楼层 来自 河北廊坊
Gradient 发表于 2012-2-16 00:38
经过不懈的摸索,终于发现了原因:这是一个bug!我把目标函数名从objective改成obj,就解决了,而在测试过 ...

楼主可否共享你的源代码和具体的步骤,以供初学者学习,以便大家一起讨论
回复 不支持

使用道具 举报

 楼主| 发表于 2012-2-16 14:17:07 | 显示全部楼层 来自 上海
qibbxxt 发表于 2012-2-16 08:52
楼主可否共享你的源代码和具体的步骤,以供初学者学习,以便大家一起讨论 ...

好的。Matlab提供的这个调用接口似乎不是很完善,我是刚开始摸索。我刚向Mathworks上报了这个bug,看看能不能通过官方的解释得到一点帮助。等有时间我把这个问题整理一下再发上来吧。
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-7-8 09:05 , Processed in 0.029744 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表