最近在使用matlab的时候。求多元函数取得最小值的时候。变量的值。于是就用到了sym符号。结果在C#中调用时总是出错。后来Google了N久发现是符号工具箱是无法编译的。。后来找到了替代方法。就是调用matlab 引擎。当然要稍微麻烦一点。因为调用引擎这种方法参数传递比较麻烦。我只想到了通过C#把需要计算的值保存到文本中。然后matlab中load进来。计算完成后 save出去。。
调用matlab引擎类似于在C#中新开了一个进程。然后执行一些命令。之前需要引用Matlab Application Type Library。这是个com组件
using MLApp;
然后就可以正常使用了。使用我试过的有两种方法
MLApp.MLAppClass matlab = new MLApp.MLAppClass(); matlab.Visible = 1; string command="figure(1)"; matlab.Execute(command); matlab.Quit();
很简单。Visible设置可见性。。command表示要执行的命令。
另一种是
MLApp.DIMLApp matlab = null;
Type matlabAppType = System.Type.GetTypeFromProgID("Matlab.Application");
matlab = System.Activator.CreateInstance(matlabAppType) as MLApp.DIMLApp;
matlab.Visible = 1;
string command="figure(2)";
matlab.Execute(command);
matlab.Quit();
不知什么原因,第一种方法我没有调用成功。第二种调用成功。欢迎讨论。
