2012-01-25 32 views
1

我在MATLAB R2010a中用以下代碼創建了一個腳本文件。我將它編譯成.NET程序集(.dll文件)。調用MATLAB方法編譯爲.NET程序集C#

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

我的猜測是,你應該定義mwMWCharArray,不作爲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); 
+0

我測試過,但沒有什麼影響! – salar

+0

你能解釋一下嗎? – salar

+0

@salar,據我所知,編譯.NET函數的第一個參數始終是nargout - 它是一個int。所以你應該在那裏「1」 –