Gradient 发表于 2012-2-15 21:50:51

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

本帖最后由 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 = " = fmincon(@objective,xstart,[],[],[],[],[],[],@mycon);";            matlabObject.Execute(command_03);

Gradient 发表于 2012-2-16 00:38:23

经过不懈的摸索,终于发现了原因:这是一个bug!我把目标函数名从objective改成obj,就解决了,而在测试过程中用了其他函数名例如testfun4,会产生无法解释的结果!虽然不是技术问题,但是揭露了一个藏的很深的bug,希望能够保留此帖给其他有相似遭遇的童鞋参考。

qibbxxt 发表于 2012-2-16 08:52:13

Gradient 发表于 2012-2-16 00:38 static/image/common/back.gif
经过不懈的摸索,终于发现了原因:这是一个bug!我把目标函数名从objective改成obj,就解决了,而在测试过 ...

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

Gradient 发表于 2012-2-16 14:17:07

qibbxxt 发表于 2012-2-16 08:52 static/image/common/back.gif
楼主可否共享你的源代码和具体的步骤,以供初学者学习,以便大家一起讨论 ...

好的。Matlab提供的这个调用接口似乎不是很完善,我是刚开始摸索。我刚向Mathworks上报了这个bug,看看能不能通过官方的解释得到一点帮助。等有时间我把这个问题整理一下再发上来吧。
页: [1]
查看完整版本: C#调用Matlab中的fmincon函数问题(已解决)