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

Problem mit .Net Builder erzeugten Funktionen in C#

 

horst_schumann90
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 24.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.03.2010, 16:28     Titel: Problem mit .Net Builder erzeugten Funktionen in C#
  Antworten mit Zitat      
Hallo,

ich hab folgendes Problem, ich habe eine Funktion die ich in Matlab geschrieben habe (Man übergibt ihr ein zweidimensionales Array aus Integern und bekommt ein Array aus drei double Werten zurück). Diese Funktion habe ich mit .Net Builder in C# Code übersetzt. Nun will ich gern diese Funktion auch in C# benutzen, doch leider geht das nicht so wie ich will.

Ich habe es mittlerweile geschafft, dass ich ohne Fehlermeldung das MWArray in die Funktion übergebe. Nur leider funktioniert die Rückgabe nicht so wie ich will. Kann mir da jemand helfen?

ich habe es mit
byte[,] image = Images[i]; //Liste in der alle eingelesenen ByteArrays stehen

MWNumericArray imageMatlab = new MWNumericArray(image);
MWArray houghLinien = null;

Class1 f = new Class1();


Console.WriteLine("" + houghLinien.NumberOfElements);
String test = houghLinien[1].ToString();

leider ist immer das Array nur 1 element groß und ich komme auch nicht exakt an die ergebnisse die ich mit matlab erziele Sad

weiß jemand rat?
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: 31.03.2010, 20:11     Titel:
  Antworten mit Zitat      
Hallo,

mir geht hier der eigentliche Funktionsaufruf (f.method) ab. Oder übersehe ich was?

Builder NE übersetzt übrigens nicht in dem Sinn in C#. Er erzeugt Komponenten, die aus C# aufgerufen werden können. Mehr Hilfe ist z.B. auch in den Beispielen in der Doku.

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

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 24.03.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.04.2010, 08:39     Titel:
  Antworten mit Zitat      
du hast recht, ich hab die zeile vergessen zu kopieren...

also so insgesamt:

byte[,] image = Images[i]; //Liste in der alle eingelesenen ByteArrays stehen

MWNumericArray imageMatlab = new MWNumericArray(image);
MWArray houghLinien = null;

Class1 f = new Class1();
houghlinien=f.find(3,imageMatlab);

Console.WriteLine("" + houghLinien.NumberOfElements);
String test = houghLinien[1].ToString();

ich weiß dass ich drei werte zurück bekommen muss, aber leider sind diese falsch, ich habe mir die bilder die ich reingebe mal anzeigen lassen...die sind schon falsch...nun weiß ich nicht ob ich die schon falsch in die Funktion gebe...eigtl ist das ein Array aus Bytes, in denen di eGrauwerte gepseichert sind :-/
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: 01.04.2010, 10:01     Titel:
  Antworten mit Zitat      
Hallo,

ich bin auch nicht sicher, woran es liegt. Ein paar Vorschläge:

- Nach den Konvertierungsregeln wird byte in MATLAB in double umgewandelt (außer es wurde anders festgelegt). Ist das so beabsichtigt und korrekt? Ansonsten vielleicht mal probieren, ob es mit double oder mit einem kleinen vordefinierten Array klappt.
- Es kann helfen, die Rückgabeargumente explizit zu casten, z.B. auf MWNumericArray oder MWCharArray.
- Indizierung in C# ist auch bei MWArrays 0-basiert, d.h. [1] spricht das zweite Element an.

Und noch eine Rückfrage:
Inwiefern ist das Bild, das reinkommt, falsch? Stimmen die Dimensionen der Variablen? Falls ja, was ist falsch?

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.