我在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
答案 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);