|
|
Absolute Anfängerfrage zu mex files - wie gehe ich damit um |
|
Untitled.m |

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 01.08.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.02.2015, 12:46
Titel: Absolute Anfängerfrage zu mex files - wie gehe ich damit um
|
 |
|
 |
|
Hallo zusammen,
ich studiere nun seit drei Semestern Elektrotechnik, besitze seit letztem Jahr auf anraten eines Profs Matlab und habe es bisher nur zum "simplen" auswerten/verrechnen/plotten von händisch eingegebenen Messdaten genutzt. Ich weiß, dass mit dem Programm noch viel mehr geht, nur vom wie habe ich keine Ahnung.
Nun stehe ich demnächst vor der Aufgabe, eine Steuerung für ein Gerät zu realisieren welches sich über OSC (Open Sound Control) ansprechen lässt. Ich bin nach kurzem googeln hier drauf gestoßen und dachte mir, die Herausforderung würde ich selbst gerne annehmen das mit Matlab zu realisieren.
Nun weiß ich aber nicht wie ich mit dem herunter geladenen Paket an Dateien richtig umzugehen habe.
Ich habe schon etwas über MEX files gelesen, bin mir aber nicht sicher ob ich es richtig verstanden habe. Bitte korrigiert mich also, falls ich etwas falsch verstanden habe.
Meine Interpretation ist:
- Matlab kann ein C-File nehmen und es mit einer Art Compiler in ein Mex-File umschreiben und es dann direkt in Matlab ausführen (wird danach das Ursprüngliche C-File zur Laufzeit überhaupt noch gebraucht?)
- Nachdem ich die Dateien abgespeichert habe und den Speicherort inkl. Unterordner zum Suchpfad hinzugefügt habe stehen mir neue Befehle zur Verfügung, welche ich erst einmal ganz gewöhnlich in das Command Window eingeben kann
- Die mitgelieferten .m Files in der Zip sind nichts anderes als einige kleine Beispielprogramme, welche die neu zu verfügung stehenden Befehlen nutzen und durch den Umfangreichen kommentar mir helfen sollen, zu verstehen wie die neuen Befehle funktionieren.
Als ich nun gerade mal ausprobieren wollte, ob das was ich mir da zusammengereimt habe so stimmen kann und dafür wie in der Readme vorgeschlagen osc_client als test auszuführen, wurde mir erst einmal gesagt, dass er eine Library am gewünschten Ort nicht finden kann (siehe Screenshot). Ich habe dann die in dem Download mitgelieferten Lybraries im in der Fehlermeldung angegebenen Pfad abgelegt und habe es noch einmal probiert.
Jetzt schien es zuerst zu funktionieren, doch nach ein paar Sekunden kam es zu einem dicken Error, mir wurde vorgeschlagen Matlab jetz zu beenden, mit folgendem Fehlerprotokoll:
Da ich ehrlich gesagt keine komplette Ahnung davon habe, was ich da eigentlich mache, mich mal durch ausprobieren an das Thema herantasten wollte, weiß ich gerade gar nicht wo hier ein fehler liegen kann. Habe ich grundsätzlich etwas zu Anfang falsch gemacht oder verstanden, muss ich noch irgendetwas passend kofigurieren/installieren, sind die heruntergeladenen Dateien kaputt/inkompatibel.
Ich würde mich also über zweierlei Antworten freuen, einmal zum Basic Verständnis was mex kann und wie es das macht und dann auch noch problemspezifisch.
Ich arbeite unter OSX 10.10.2 mit Matlab R2014a als Studentenversion.
Beschreibung: |
|
 Download |
Dateiname: |
oscmex problem.tif |
Dateigröße: |
302.86 KB |
Heruntergeladen: |
254 mal |
|
|
|
|
|
Untitled.m |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 01.08.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.02.2015, 13:28
Titel:
|
 |
Update: Inzwischen habe ich herausfinden können, dass der Crash nur bei einem der benutzten Befehle auftritt. Von daher denke ich, dass die Problemlösung eher spezifisch für diesen Code ist.
Daher würde ich meine Frage noch einmal umformulieren in: Habe ich die Funktion der Mex Dateien vernünftig verstanden? Vor allem interessiert mich welche Dateien, die in dem heruntergeladenen Bundle mitgekommen sind wofür benötigt werden, ob die C-Soucecodes gebraucht werden zum ausführen oder nur als Nettigkeit mit im Download waren und ob ich alles richtig gemacht habe indem ich die .dylib Dateien in /usr/local/lib hineinkopiert habe?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 18.02.2015, 14:24
Titel:
|
 |
Hallo,
Zitat: |
dass der Crash nur bei einem der benutzten Befehle auftritt. |
Eine naheliegende Frage wäre dann: bei welchem?
Eine Möglichkeit ist, dass die Mex-Datei nicht mit deiner Version des Betriebssystems kompatibel ist. Wenn der Source Code ohnehin mitgeliefert wurde, kannst du ja die Mex-Datei selbst nochmal erzeugen.
Grüße,
Harald
|
|
|
Untitled.m |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 01.08.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.02.2015, 15:31
Titel:
|
 |
|
 |
|
Okay,
gerne kann ich darüber auch was schreiben, aber da dieser Befehl aus der geladenen mex Datei stammt, dachte ich es hat nur noch entfernt etwas mit Matlab zu tun, ich denke es hängt eher mit dem C Code dahinter zusammen. Aber gut, folgendes habe ich mit meinem gefährlichen Halbwissen herausgefunden:
Matlab stürzt ab wenn ich
aufrufe - natürlich vorausgesetzt a wurde vorher mit
angelegt.
Der Versuch osc_free_adress.c mit
neu zu kompilieren schlug fehl, da lo/lo.h, welche im C Quelltext eingebunden ist nicht gefunden werden konnte. Kurz gegoogelt, lo/lo.h ist in irgend einer Weise Produkt aus der LibLO Library, welche wiederum Grundlage für die OSC kommunikation zu sein scheint. Hier wirds aber von meinem Verständnis schwammig, meine eigenen kleinen C-Spielereien haben bisher nie irgendwas mit externen Libraries zu tun gehabt, ich habe schlicht und einfach (noch) keine wirkliche Ahnung vom Umgang mit Libraries, auch wenn einem dieser Begriff immer mal wieder begegnet.
Ich habe ja einige liblo.*.dylib Dateien aus den heruntergeladenen Ordnern, wie im ersten Post beschrieben einfach in /usr/local/lib/ hineinkopiert.
Kann es sein, dass da der Fehler liegt? Wenn ja wie macht man das richtig? Muss ich mir die Libraries noch einmal auf irgendeine Weise für mein System passend kompilieren?
Und nach wie vor steht die allgemeine Frage im Raum: Braucht Matlab den C Quelltext noch nach dem erstellen der mex Datei? Oder wird die im mehr oder weniger klassischen Sinne kompiliert und ist danach nicht notwendig um das Programm laufen zu lassen? Denn es wird ja offensichtlich in meinem Fall z.B. der Clang Compiler aus Xcode genutzt beim erzeugen der mex Datei.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 18.02.2015, 17:33
Titel:
|
 |
Hallo,
hast du es mal mit dem Support oder unter Discussion auf der Seite versucht, von der du das heruntergeladen hast? Die dürften ihr Projekt ja besser kennen.
Grüße,
Harald
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|