8

C# に慣れてきたので、Web サービスからデータを取得するコンソール アプリケーションを設計します。科学者グループが MatLab のデータを使用できるようにしたいと考えています。これを実現する 1 つの方法は、HDD 上のファイルに保存し、その内容を MatLab にロードすることです。

しかし、それは私に考えさせました。C# で作成された EXE を呼び出す関数を MatLab で作成することは可能ですか?

a = GetMeSomeData()

変数aにサービスの応答を入力しますか? (もちろん、MatLab のマトリックス モデルに適合するように、C# コードを使用してデータをフォーマットします。)

これに取り組み始める前にグーグルで調べましたが、見つけたもののほとんどは古いバージョンのMatLab(2007)に関するもので、COMオブジェクトの作成について何か言われています。

4

3 に答える 3

5

これをご覧になることをお勧めします: Using .NET libraries in MATLAB

そこにはたくさんのドキュメントがあります。

から始めて、.NET の場合と同じようにクラスを通常どおり使用できるようです。NET.addAssembly('path-to-dll)

Using Arrays with .NET Applicationsも参照してください。

于 2013-01-23T21:43:07.283 に答える
3

.NET アセンブリで関数を簡単に呼び出すことができます。まず、使用するアセンブリを Matlab に指定する必要があります。

NET.addAssembly("path//to//assembly.dll");

その後、m ファイルで関数を呼び出すだけです。

foo = Namespace.Class.FunctionFoo(input1, input2);
bar = Namespace.Class.FunctionBar(input1, input2);

複数の出力を持つこともできます。次のような AC# 関数:

public void MultipleOut(int in1, int in2, out int out1, out int out2)
{ ... }

Matlab では次のように呼び出すことができます。

[out1, out2] = Namespace.Class.MultipleOut(in1, in2);
于 2013-01-23T21:45:24.727 に答える
2

質問に直接答えるには、systemコマンドを使用するか!、MATLAB で外部プロセスを実行します。返されたら、MATLAB 関数からの出力を読み取って解析できます。それをすべて MATLAB .m ファイルにまとめると、質問で説明した内容が得られます。

もちろん、MATLAB から Web サービスに直接アクセスすることもできますcreateClassFromWsdl。また、他の人が指摘しているNET.addAssemblyように、.net アセンブリを MATLAB から直接インポートして使用できるため、テキスト ファイル出力を解析するよりもクリーンな場合があります。

于 2013-01-23T21:42:39.960 に答える