调用从C#编译为.NET程序集的MATLAB方法

时间:2012-01-25 17:45:51

标签: c# matlab matlab-deployment

我在MATLAB R2010a中使用以下代码创建了一个脚本文件。我将它编译成.NET程序集(.dll文件)。

MATLAB脚本:

function res=Moshtagh(f)
    res=diff(f);
end

这在MATLAB中可以正常工作。 请注意,在我的dll中,类名是Difer,我计算衍生的方法是Moshtagh

C#代码:

using MathWorks.MATLAB.NET.ComponentData;
using MathWorks.MATLAB.NET.Arrays;
using MathWorks.MATLAB.NET.Utility;
try
{
    Untitled3.Difer dif = new Untitled3.Difer();
    MWArray mw = "x+sin(2*x)";
    MessageBox.Show(dif.Moshtagh(mw).ToString());
}
catch (Exception ex)
{
    MessageBox.Show(ex.ToString());
}

但问题不是得到结果1+2cos(2x),而是显示消息框:

-77 72 -10 5 -70 10 -8 78 -79

1 个答案:

答案 0 :(得分:0)

我的猜测是,您应将mw定义为MWCharArray,而不是MWArray

  Untitled3.Difer dif = new Untitled3.Difer();
  MWCharArray mw = new MWCharArray("x+sin(2*x)");
  MessageBox.Show(dif.Moshtagh(mw).ToString());

另一个猜测是,Moshtagh期望第一个参数为int - nargout=1

  MWArray out = dif.Moshtagh(1,mw);