私はC#で書き直したくない複雑なMatlab関数を持っています。この関数は、N個の倍精度値の配列を返します。MatlabのC#への出力
関数を.NETアセンブリ(.dllファイル)にコンパイルし、その関数の署名が[resutls] = myFunc( 'stringInput')のようになっている場合、どのようにして関数をC#コード?
ありがとうございます!
私はC#で書き直したくない複雑なMatlab関数を持っています。この関数は、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");
さらにはstuffを実行してください。例:
matlabInstance.Execute("evalin('base' , 'plot(range , dataVector , ''k'');');");
もちろん、エラー処理などが必要です。通常のアプリケーションのものです。 それについての話題がありますhere
あなたの '.net'プロジェクトにdllへの参照を入れて、あなたの関数の署名を尊重してください...小さな例で自分で試してみましたか? – Hoki