我有一個複雜的Matlab函數,我不想在C#中重寫。該函數返回一個包含N個雙精度數字的數組。Matlab輸出到C#
鑑於我已將函數編譯爲.NET程序集(.dll文件),並且該函數的簽名與[resutls] = myFunc('stringInput')類似,如何在函數內部調用函數C#代碼?
謝謝!
我有一個複雜的Matlab函數,我不想在C#中重寫。該函數返回一個包含N個雙精度數字的數組。Matlab輸出到C#
鑑於我已將函數編譯爲.NET程序集(.dll文件),並且該函數的簽名與[resutls] = myFunc('stringInput')類似,如何在函數內部調用函數C#代碼?
謝謝!
在這裏你可以找到的步驟做:
https://www.mathworks.com/help/compiler_sdk/gs/create-a-cc-application-with-matlab-code-1.html
是必須已安裝運行代碼在計算機上運行時庫(您可以在創建.dll文件包添加它)
明天如果鏈接被破壞會發生什麼?考慮在你的答案中提供代碼。 – peval27
我這樣做的方式是通過添加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
將引用的dll放在你的'.net'項目中,然後只是尊重你的函數的簽名......你有沒有嘗試過一個小例子? – Hoki