mex-Datei Absturz -> Problem mit Variablen/Pointern?
Zuschauer
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 22.09.2014, 15:00
Titel: mex-Datei Absturz -> Problem mit Variablen/Pointern?
Hallo!
Ich versuche seit Tagen einen mex-File (stabil) zum Laufen zu bekommen. Ich brauche für meinen Algorithmus eine Index-Menge die leider nicht-linear ist. Um das ganze zu verschnellern wollte ich die Berechnung in eine mex-Datei auslagern. Rechnerisch scheint der Algorithmus richtig zu sein, da er in vielen Fällen durchläuft und das richtige Ergebnis liefert. Allerdings scheint irgendwo der Wurm drin zu sein, denn bei bestimmten Eingabeparametern stürzt Matlab einfach ab (keine Fehlermeldung, garnichts, einfach keine Reaktion mehr).
Die Funktion erhält als Eingabeparameter eine 2x1 Matrix (Größe einer Matrix meines Algorithmus) und einen Index dieser Matrix (1-dimensionale Indexierung). Als Ausgabe erhält man alle Indizes die auf einem bestimmten Kreisring liegen. In der mex-Datei werden dafür einfach 2 for-Schleifen durchlaufen und der Index nach und nach in "outMatrix" eingetragen. Der vorher für den Output angelegte Speicherplatz hat Platz für 45*cSize[1] Einträge was eine obere Schranke für den benötigten Platz ist. Gegen Ende werden die überschüssigen Einträge entfernt.
Als funktionierendes Beispiel kann einfach mal dieser Code ausgeführt werden:
stürzt bei mir das Programm ohne jegliche Warnung ab. Ich vermute das es an irgendeinem Pointer-Problem liegt oder evtl. an der Unverträglichkeit der Matlab-Variablentypen (mx...) mit den nativen C-Typen (double, int...). Hab aber jetzt schon ewig herumprobiert und konnte das Ganze noch nicht zum laufen bringen. Ich hoffe hier kann mir jemand weiterhelfen.
Vielen Dank schonmal fürs bis hierhin lesen
Zuschauer
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 22.09.2014, 18:53
Titel:
Ok, hat sich erledigt -.-
Die obere Schranke für die Elemente gilt erst, wenn die Matrizen entsprechend groß sind (was bei meiner Anwendung zutrifft aber bei Minimalbeispielen natürlich nicht mehr). Tja, da hät ich auch eher drauf kommen können.
Einstellungen und Berechtigungen
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
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.