WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Eine Matlab Funktion von c#, csharp aufrufen.

 

Mueller
Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 21.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.01.2017, 16:09     Titel: Eine Matlab Funktion von c#, csharp aufrufen.
  Antworten mit Zitat      
Hallo,

Ich möchte eine Schnittstelle zwischen Matlab und c# erzeugen -> dafür muss ich mein M-File in eine DLL Library „übersetzen“.

•Ich gebe im Command Fenster „deploytool“ ein.
•Ich wähle „Libary Compiler“ Es öffnet sich ein Fenster.
Bei „Typ“ wähle ich .NET Assembly.
Bei „Add exported functions“ wähle ich meine Matlab Funktion.
Aber wie kann ich mein derzeitiges Script siehe Anhang in eine Funktion
Umwandeln? Damit meine ich eine Funktion die als Übergabeparameter den Input also mein txt. File braucht und als Ausgabe/Ergebnis die Diagramme hat/liefert? Weiters setze ich den Haken bei „Runtime included in package“. Müssen noch weitere Einstellungen getroffen werden?

Wie sieht der dazugehörende c# Code aus bzw. die dll Referenzierung in meinem .NET project aus?

Ich habe zwei interessante Links gefunden die mir den Sachinhalt ein wenig näher gebracht haben.

https://www.codeproject.com/article.....ating-matlab-with-the-net
http://stackoverflow.com/questions/.....lab-function-from-c-sharp

Ps: Danke Jan für deine bisherige Hilfe/Info. Ich habe mir in der kurzen Zeit recht viel Wissen angeeignet. Danke.

Danke.

aaaa.txt
 Beschreibung:
Mein Input (wie in der Vergangenheit)

Download
 Dateiname:  aaaa.txt
 Dateigröße:  6.22 KB
 Heruntergeladen:  352 mal
dez1.m
 Beschreibung:
Mein Script / leider keine Funktion.

Download
 Dateiname:  dez1.m
 Dateigröße:  37.86 KB
 Heruntergeladen:  345 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.01.2017, 16:42     Titel:
  Antworten mit Zitat      
Hallo,

aus dem Skript kannst du eine Funktion machen, indem du
Code:
function [output1, output2, ...] = functionName(in1, in2, ...)
darüberschreibst, also z.B.
Code:
function results = functionName(fileName)


Beispiele zur Integration in C# findest du in der Doku, z.B. hier
https://www.mathworks.com/help/comp.....into-a-c-application.html

Die einzige Möglichkeit, Diagramme zu integrieren, sehe ich in Web Applications. Dabei wird die Figure mit dem webfigure-Befehl umgewandelt. Viele Informationen zu WebFigures gibt es hier:
https://www.mathworks.com/help/comp.....otnet_web_deployment.html

Ich würde aber in einem ersten Schritt erst mal versuchen, numerische Ergebnisse zurückzuholen, und die Figures als nächsten Schritt angehen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Mueller
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 21.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.01.2017, 18:38     Titel:
  Antworten mit Zitat      
Danke für die Links.[url] https://de.mathworks.com/help/compi.....-c-application.html[/url] Bei dieser Integration bin ich gestern schon ausgestiegen :/ Irgendetwas hat c# nicht gefunden.

Ich hab einmal gelesen, ich bräuchte bei meinem Script einfach nur function in der ersten Zeile hinzufügen sodass das Script als eine Funktion behandelt wird??? Klingt sehr strange..
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.01.2017, 19:27     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Bei dieser Integration bin ich gestern schon ausgestiegen :/ Irgendetwas hat c# nicht gefunden.

Das ist oft nur ein kleines Problem. Bitte die genaue Fehlermeldung angeben.

Zitat:
Ich hab einmal gelesen, ich bräuchte bei meinem Script einfach nur function in der ersten Zeile hinzufügen sodass das Script als eine Funktion behandelt wird??? Klingt sehr strange..

Das ist so, siehe auch meine Nachricht. Allerdings hat die Funktion damit einen eigenen Workspace, was die Behandlung von Variablen deutlich verändert. In der Doku findest du auch dazu sicher mehr.

Integration in .NET oder andere Plattformen ist nicht das einfachste, gerade wenn man sich nicht tief in dieser Plattform auskennt. Bei Lizenzen unter Wartung kann da auch der Technische Support von MathWorks weiterhelfen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Mueller
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 21.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2017, 13:23     Titel:
  Antworten mit Zitat      
Ich versuche gerade aus meinem Script eine Funktion zu kreieren.

Code:
Error: File: dez1.m Line: 733 Column: 1
Function definitions are not permitted in this context.

Am Anfang habe ich folgendes hinzugefügt:
Zitat:
filename = {'aaaa.txt'} ;
function results = dez1(fileName)

bzw am Schluss:
Code:


Aber was ist mein result? Mein result sollte der ganze Plot sein..
Die Beschreibung für Funktionen habe ich mir durchgelesen.
Danke
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.01.2017, 13:31     Titel:
  Antworten mit Zitat      
Hallo,

der Funktionsdeklaration muss ganz an den Anfang der Datei, nicht irgendwo in die Mitte.

Der Aufruf erfolgt dann typischerweise aus dem Command Window, einem Skript, oder einer anderen Funktion heraus.

Zitat:
Aber was ist mein result? Mein result sollte der ganze Plot sein..

Innerhalb von MATLAB kannst du ein Handle auf die Figure übergeben, also z.B.
Code:


Zu .NET hin müsstest du wie gesagt mit WebFigures arbeiten. Da das aufwändiger ist, würde ich zunächst versuchen, numerische Daten zu übergeben.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Mueller
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 21.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2017, 13:45     Titel:
  Antworten mit Zitat      
Danke für die schnelle Antwort. Den Function Befehl wurde ganz am Anfang implementiert. Das
Code:
wurde soeben auch hinzugefügt trotzdem bekomme ich folgende Fehlermeldung:

Code:
Error: File: dez1.m Line: 727 Column: 2
Function definitions are not permitted in this context.


An c# möchte ich keine Plots übergeben. Eigentlich wollte ich im c#, der Matlab exe den Input (.txt) File übergeben. Das war meine Idee. Anders ausgedrückt c# ruft die Matlab exe auf und übergibt sie das txt-File Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.01.2017, 13:51     Titel:
  Antworten mit Zitat      
Hallo,

die Fehlermeldung würde ich so interpretieren, dass du in Zeile 727 (und nicht in Zeile 1) die Funktion zu definieren versuchst.
Falls die Probleme weiterhin bestehen, bitte ein (Minimal-)Beispiel posten, in dem das Problem auftritt.

Mit anderen Worten, an C# wird gar nichts zurückgegeben? Dann bräuchtest du gar kein result. Ob Plots da "normal" geöffnet werden, habe ich noch nicht ausprobiert.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.01.2017, 15:01     Titel:
  Antworten mit Zitat      
Hallo,

gerade probiert: Plots werden "normal" geöffnet.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.