Est-il possible d’utiliser une application .NET dans MatLab?

Je me sens chez moi en C # et je vais concevoir une application console qui récupérera des données d’un service Web. J’aimerais permettre à un groupe de scientifiques d’utiliser les données de MatLab. Une façon d’y parvenir consiste à le stocker dans un fichier sur le disque dur, puis à en charger le contenu dans MatLab.

Cela m’a fait réfléchir, cependant. Est-il possible de créer une fonction dans MatLab qui appelle un fichier EXE créé en C # afin que mes amis scientifiques puissent aller:

a = GetMeSomeData() 

et peupler la variable a avec la réponse du service? (Bien entendu, je mettrais en forme les données en utilisant mon code C # pour qu’il s’adapte au modèle masortingciel de MatLab.)

J’ai déjà commencé à travailler sur Google avant de commencer à travailler sur Google, mais la plupart de ce que j’ai trouvé concerne une ancienne version de MatLab (2007) et parle de la création d’un object COM.

Vous pouvez facilement appeler des fonctions dans un assemblage .NET. Vous devez d’abord dire à Matlab quel assemblage vous allez utiliser:

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

Après cela, vous n’appelez que des fonctions dans vos fichiers m:

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

Vous pouvez même avoir plusieurs sorties. AC # fonctionne comme ceci:

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

peut être appelé comme ça dans Matlab:

 [out1, out2] = Namespace.Class.MultipleOut(in1, in2); 

Vous voudrez peut-être jeter un coup d’œil à ceci: Utilisation de bibliothèques .NET dans MATLAB .

Il y a beaucoup de documentation là-bas.

Commencez par NET.addAssembly ('path-to-dll) , puis il semble que vous puissiez simplement utiliser les classes normalement, comme vous le feriez dans .NET.

Vous pouvez également vous intéresser à l’ utilisation de tableaux avec les applications .NET .

Pour répondre directement à la question, vous pouvez utiliser la commande system ou ! dans MATLAB pour exécuter un processus externe. Une fois qu’il est renvoyé, vous pouvez lire et parsingr le résultat de votre fonction MATLAB. Entourez tout cela dans un fichier MATLAB .m et vous avez ce que vous décrivez dans la question.

Bien entendu, vous pouvez simplement accéder au service Web directement à partir de MATLAB avec createClassFromWsdl . Et comme d’autres le soulignent, NET.addAssembly vous permet d’importer et d’utiliser votre assemblage .net directement à partir de MATLAB, ce qui peut être plus propre que l’parsing de la sortie d’un fichier texte.