2016-10-26 64 views
0

我有一個複雜的Matlab函數,我不想在C#中重寫。該函數返回一個包含N個雙精度數字的數組。Matlab輸出到C#

鑑於我已將函數編譯爲.NET程序集(.dll文件),並且該函數的簽名與[resutls] = myFunc('stringInput')類似,如何在函數內部調用函數C#代碼?

謝謝!

+0

將引用的dll放在你的'.net'項目中,然後只是尊重你的函數的簽名......你有沒有嘗試過一個小例子? – Hoki

回答

0

我這樣做的方式是通過添加MLApp作爲項目參考。 從MATLAB,您需要啓動自動化服務:

enableservice('AutomationServer', true); 

和C#中,你可以使用連接到Matlab的。

MLApp.DIMLApp matlabInstance = (MLApp.DIMLApp)Marshal.GetActiveObject("Matlab.Desktop.Application"); 

然後您可以使用MLApp的接口函數進行交互。例如。

int a = (int)matlabInstance.GetVariable("variableName", "base"); 

甚至執行的東西。例如:

matlabInstance.Execute("evalin('base' , 'plot(range , dataVector , ''k'');');"); 

當然你需要一些錯誤處理,等等正常的應用程序的東西。 有一個關於它的話題here