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

Matlab-Function in C# ausführen

 

Coja
Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 20.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.09.2010, 12:49     Titel: Matlab-Function in C# ausführen
  Antworten mit Zitat      
Hallo,

ich würde gerne eine in Matlab geschriebene Funktion in C# ausführen lassen. Dabei werden die Werte einer Float-Liste (FPoint-List) in C# (2 Spalten), also quasi ein Array und einzelne Variablenwerte für die Matlab-Funktion benötigt.
Die Matlab-Funktion soll nach der Übergabe der Werte ausgeführt werden und gibt dann eine (nx2)-Matrix wieder. Die Spalten enthalten jeweils Zahlenwerte. Diese Werte benötige ich in C Sharp. Kann mir da jemand weiterhelfen?

http://www.mathworks.de/products/netbuilder/description2.htmlDen Link hab ich schon durchgearbeitet und den Befehl
Code:
kenn ich auch. Ich hab auch schon eine eigene Executable *.exe erstellt, mit:
Code:
mcc -m Skript1.m Unterfunktion2.m

Dies ist auch lauffähig, jedoch gebe ich dabei die Werte im Skript vor und lese sie nicht von C# ein.

Vielen Dank schonmal,
Gruß
Coja
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

das ist ein recht komplexes Thema. Du kannst versuchen, dich mit der Hilfe durchzuhangeln, z.B. ein Startpunkt hier:
http://www.mathworks.com/access/hel.....etbuilder/ug/bp_dn5y.html

Hilfreich wäre wohl auch folgende Schulung der Firma Mathworks:
http://www.mathworks.de/services/training/courses/MLNE_1.html

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

Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 20.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.09.2010, 13:22     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für die schnelle Antwort. Für die Nutzung des 1. Links muss ich bei Mathworks angemeldet sein und eine Schulung/ Kurs passt mir nicht so ganz.
Ich könnte ja auch einen Umweg über eine Datei gehen, in der ich die Daten von C# abspeichere und sie dann mit Matlab einlese, berechne und in einer anderen Datei wieder abspeichere. Aber ich würde die Daten gerne direkt übergeben.

vg
COja
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

das war ein Link auf die Online-Dokumentation. Du kannst die Doku aber auch direkt aus MATLAB heraus abrufen.
In der Hilfe auf das Contents-Tab gehen und dann:
MATLAB Builder NE (--> evtl. User's Guide, je nach MATLAB Version) --> Sample Applications in C#.

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

Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 20.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.11.2010, 18:53     Titel:
  Antworten mit Zitat      
Hallo,
so ich bin jetzt schon einmal soweit, dass ich eine dll erzeugt habe. Nun möchte ich diese noch in C# nutzen.
Meine Matlab-Function sieht wiefolgt aus:
Code:

[P_B_alle,Fv,ME]=DachAlg3(x,y,x1,y1,xh,yh,B,H,xi,yi)
%P_B_alle: nx2 (double)
%Fv: 5x1 (double)
%ME: 3x1 (double)
% x: 1xm (double)
% y: 1xm (double)
% x1,y1,B,H,xi,yi: 1(double)
% xh: 1xp (double)
% yh: 1xp (double)
%n,m,p beliebige Integer


Von dieser Funktion liegt mir nun die DLL vor.
Nun möchte ich diese in C# verwenden:



//x-Vektor
double[] xData = new double[5];
xData[0] = 0; xData[1] = 100; xData[2] = 100; xData[3] = 0;
xData[4] = 0;
MWArray x = new MWNumericArray(5,1,xData) ;

//y-Vektor
double[] yData = new double[5];
yData[0] = 0; yData[1] = 0; yData[2] = 50; yData[3] = 50; yData[4] = 0;
MWArray y = new MWNumericArray(5, 1, yData);

//x1,y1,xh,yh,B,H,xi,yi
double[] x1Data = new double[1];
x1Data[0] = 0;
MWArray x1 = new MWNumericArray(1, 1, x1Data);
// Der Übersichlichkeit halber lass ich das ganze mal für //y1,xh,yh,B,H,xi,yi weg



MWNumericArray output1 = null;
try
{

output1 = (MWNumericArray)dachAlg1.DachAlg3();
// Funktionsaufruf
output1 = dachAlg1.DachAlg3(3, x, y, x1, y1, xh, yh, B, H, xi, yi);
}
catch(Exception exception)
{
MessageBox.Show(exception.Message.ToString());

}




Leider Bekomme ich ständig Fehlermeldungen (Der Wert darf nicht Null sein,Parametername: SOURCE,...). Ich hoffe es kennt sich jemand (mir fällt da HARALD ein Wink ) damit aus...
vg
Coja
Private Nachricht senden Benutzer-Profile anzeigen
 
Coja
Themenstarter

Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 20.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.11.2010, 18:18     Titel:
  Antworten mit Zitat      
Hallo,
si ich habs jetzt hinbekommen. Ein paar Anreguhngen für euch:
Zur Erzeugung der DLL nutzt ihr den BUILDER NE in Matlab.
Diese DLL könnt ihr dann in C# nutzen und euch eine Klasse erzeugen, Methoden aufrufen... dabei solltet ihr euch unbedingt mit der Verwendung von MWArray, MWCellArray, MWNumericArray,....
auseinandersetzeten.
vg
Coja
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.