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

Absolute Anfängerfrage zu mex files - wie gehe ich damit um

 

Untitled.m
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 01.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.02.2015, 12:46     Titel: Absolute Anfängerfrage zu mex files - wie gehe ich damit um
  Antworten mit Zitat      
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:
Code:
------------------------------------------------------------------------
       Segmentation violation detected at Wed Feb 18 11:30:39 2015
------------------------------------------------------------------------

Configuration:
  Crash Decoding     : Disabled
  Current Visual     : Quartz
  Default Encoding   : ISO-8859-1
  MATLAB Architecture: maci64
  MATLAB Root        : /Applications/MATLAB_R2014a.app
  MATLAB Version     : 8.3.0.532 (R2014a)
  Operating System   : Darwin 14.1.0 Darwin Kernel Version 14.1.0: Mon Dec 22 23:10:38 PST 2014; root:xnu-2782.10.72~2/RELEASE_X86_64 x86_64
  Processor ID       : x86 Family 6 Model 42 Stepping 7, GenuineIntel
  Virtual Machine    : Java 1.7.0_11-b21 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
  Window System      : Quartz

Fault Count: 1


Abnormal termination:
Segmentation violation

Register State (from fault):
  RAX = 0000000000000000  RBX = 00007f8e0a666930
  RCX = 000000010f9aea48  RDX = 00007f8e13a13d10
  RSP = 0000000000000000  RBP = 000000010f9aefd8
  RSI = 000000010f9aea30  RDI = 0000000000000000

   R8 = 0000003000000018   R9 = 000000010f9aea30
  R10 = 000000010f9ae930  R11 = 0000000104527ad9
  R12 = fb004f502ac6f185  R13 = 000000010f9aea30
  R14 = 000000010f9aefd8  R15 = 0000000012ef15d0

  RIP = 000000010f9aea70  RFL = 000000010a756d98

   CS = 726464615f63736f   FS = 653866373a737365   GS = 3064353166653231

Stack Trace (from fault):
[  0] 0x000000010427a874 /Applications/MATLAB_R2014a.app/bin/maci64/libmwfl.dylib+00030836 _ZN2fl4diag15stacktrace_base7captureERKNS0_14thread_contextEm+00000052
[  1] 0x000000010427e2aa /Applications/MATLAB_R2014a.app/bin/maci64/libmwfl.dylib+00045738 _ZN2fl4test17terminate_handledEv+00000906
[  2] 0x000000010427dcf5 /Applications/MATLAB_R2014a.app/bin/maci64/libmwfl.dylib+00044277 _ZN2fl4diag13terminate_logEPKcPK17__darwin_ucontext+00000117
[  3] 0x0000000103deed07 /Applications/MATLAB_R2014a.app/bin/maci64/libmwmcr.dylib+00269575 _Z32mnRunPathDependentInitializationv+00003127
[  4] 0x0000000103deeff8 /Applications/MATLAB_R2014a.app/bin/maci64/libmwmcr.dylib+00270328 _Z32mnRunPathDependentInitializationv+00003880
[  5] 0x0000000103dec81a /Applications/MATLAB_R2014a.app/bin/maci64/libmwmcr.dylib+00260122 mnFatalSignalHandler+00000298
[  6] 0x00007fff9600df1a           /usr/lib/system/libsystem_platform.dylib+00020250 _sigtramp+00000026
[  7] 0x00007fff6171a790                                   <unknown-module>+00000000
[  8] 0x000000010a756d98 /Users/janosbuttgereit/Documents/MATLAB/osc-mexmaci64/osc-mexmaci64/osc_free_address.mexmaci64+00003480 mexFunction+00000232
[  9] 0x0000000107c750b5 /Applications/MATLAB_R2014a.app/bin/maci64/libmex.dylib+00057525 mexRunMexFile+00000085
[ 10] 0x0000000107c71101 /Applications/MATLAB_R2014a.app/bin/maci64/libmex.dylib+00041217 _ZN7Mfh_mex30runMexFileWithSignalProtectionEiPP11mxArray_tagiS2_+00000113
[ 11] 0x0000000107c712e0 /Applications/MATLAB_R2014a.app/bin/maci64/libmex.dylib+00041696 _ZN7Mfh_mex13dispatch_fileEiPP11mxArray_tagiS2_+00000288
[ 12] 0x0000000107ceaa9a /Applications/MATLAB_R2014a.app/bin/maci64/libmwm_dispatcher.dylib+00334490 _ZN8Mfh_file11dispatch_fhEiPP11mxArray_tagiS2_+00000602
[ 13] 0x0000000108393b62 /Applications/MATLAB_R2014a.app/bin/maci64/libmwm_interpreter.dylib+00990050 _Z19inDispatchFromStackiPKcii+00001522
[ 14] 0x000000010831ea90 /Applications/MATLAB_R2014a.app/bin/maci64/libmwm_interpreter.dylib+00510608 inCallFcnFromReference+00000768
[ 15] 0x0000000108348291 /Applications/MATLAB_R2014a.app/bin/maci64/libmwm_interpreter.dylib+00680593 inPcodeWalker+00007073
[ 16] 0x0000000108344097 /Applications/MATLAB_R2014a.app/bin/maci64/libmwm_interpreter.dylib+00663703 inInterPcode+00000871
[ 17] 0x0000000108345310 /Applications/MATLAB_R2014a.app/bin/maci64/libmwm_interpreter.dylib+00668432 _Z26inExecuteMFunctionOrScriptP6Mfh_mpb+00000896
[ 18] 0x00000001083b9f9b /Applications/MATLAB_R2014a.app/bin/maci64/libmwm_interpreter.dylib+01146779 _Z10inRunMfileiPP11mxArray_tagiS1_P6Mfh_mpP15inWorkSpace_tag+00003163
[ 19] 0x0000000107ceaac7 /Applications/MATLAB_R2014a.app/bin/maci64/libmwm_dispatcher.dylib+00334535 _ZN8Mfh_file11dispatch_fhEiPP11mxArray_tagiS2_+00000647
[ 20] 0x0000000108393b62 /Applications/MATLAB_R2014a.app/bin/maci64/libmwm_interpreter.dylib+00990050 _Z19inDispatchFromStackiPKcii+00001522
[ 21] 0x000000010831ea90 /Applications/MATLAB_R2014a.app/bin/maci64/libmwm_interpreter.dylib+00510608 inCallFcnFromReference+00000768
[ 22] 0x0000000108348291 /Applications/MATLAB_R2014a.app/bin/maci64/libmwm_interpreter.dylib+00680593 inPcodeWalker+00007073
[ 23] 0x0000000108344097 /Applications/MATLAB_R2014a.app/bin/maci64/libmwm_interpreter.dylib+00663703 inInterPcode+00000871
[ 24] 0x0000000108345310 /Applications/MATLAB_R2014a.app/bin/maci64/libmwm_interpreter.dylib+00668432 _Z26inExecuteMFunctionOrScriptP6Mfh_mpb+00000896
[ 25] 0x00000001083b9f9b /Applications/MATLAB_R2014a.app/bin/maci64/libmwm_interpreter.dylib+01146779 _Z10inRunMfileiPP11mxArray_tagiS1_P6Mfh_mpP15inWorkSpace_tag+00003163
[ 26] 0x0000000107ceaac7 /Applications/MATLAB_R2014a.app/bin/maci64/libmwm_dispatcher.dylib+00334535 _ZN8Mfh_file11dispatch_fhEiPP11mxArray_tagiS2_+00000647
[ 27] 0x000000010838095c /Applications/MATLAB_R2014a.app/bin/maci64/libmwm_interpreter.dylib+00911708 _Z23inEvalPcodeHeaderToWordP15_memory_contextiPP11mxArray_tagP12_pcodeheaderP6Mfh_mpj+00000220
[ 28] 0x000000010833f5bb /Applications/MATLAB_R2014a.app/bin/maci64/libmwm_interpreter.dylib+00644539 _Z25in_local_call_with_setjmpIN5boost3_bi6bind_tIvPFvP15_memory_contextPiPP11mxArray_tagP12_pcodeheaderjENS1_5list5INS1_5valueIS4_EENS0_3argILi1EEENSG_ILi2EEENSE_ISA_EENSE_IiEEEEEEEN6mlutil14cmddistributor17inExecutionStatusET_S5_S8_b+00000171
[ 29] 0x000000010833a9d9 /Applications/MATLAB_R2014a.app/bin/maci64/libmwm_interpreter.dylib+00625113 _Z12inEvalStringP15_memory_contextRKSbItSt11char_traitsItESaItEE8EvalTypeiPP11mxArray_tag12inDebugCheckP12_pcodeheaderPib+00002713
[ 30] 0x000000010833af5d /Applications/MATLAB_R2014a.app/bin/maci64/libmwm_interpreter.dylib+00626525 _ZN12InterpBridge22EvalCmdWithLocalReturnERKSbItSt11char_traitsItESaItEEPibb+00000141
[ 31] 0x0000000107c2d8ad /Applications/MATLAB_R2014a.app/bin/maci64/libmwbridge.dylib+00051373 _Z28evalCommandWithLongjmpSafetyRKSbItSt11char_traitsItESaItEE+00000093
[ 32] 0x0000000107c2df5d /Applications/MATLAB_R2014a.app/bin/maci64/libmwbridge.dylib+00053085 _Z8mnParserv+00000717
[ 33] 0x0000000103ddad22 /Applications/MATLAB_R2014a.app/bin/maci64/libmwmcr.dylib+00187682 _ZN11mcrInstance30mnParser_on_interpreter_threadEv+00000034
[ 34] 0x0000000103db55ba /Applications/MATLAB_R2014a.app/bin/maci64/libmwmcr.dylib+00034234 _ZN3mcr7runtime17InterpreterThread4Impl26invocation_request_handlerEl+00000058
[ 35] 0x00000001039a4395 /Applications/MATLAB_R2014a.app/bin/maci64/libmwservices.dylib+00127893 _ZN10eventqueue18UserEventQueueImpl5flushEv+00001269
[ 36] 0x0000000108b9b2d5 /Applications/MATLAB_R2014a.app/bin/maci64/libmwuix.dylib+00037589 _Z25isHandleUserEventCallbackPFvPvE+00000485
[ 37] 0x0000000103a46565 /Applications/MATLAB_R2014a.app/bin/maci64/libmwservices.dylib+00791909 _Z21svWS_ProcessCallbacksv+00016261
[ 38] 0x0000000103a41e42 /Applications/MATLAB_R2014a.app/bin/maci64/libmwservices.dylib+00773698 _Z25svWS_ProcessPendingEventsiib+00000834
[ 39] 0x0000000103a41b4e /Applications/MATLAB_R2014a.app/bin/maci64/libmwservices.dylib+00772942 _Z25svWS_ProcessPendingEventsiib+00000078
[ 40] 0x0000000103db57ff /Applications/MATLAB_R2014a.app/bin/maci64/libmwmcr.dylib+00034815 _ZN3mcr7runtime17InterpreterThread4Impl14process_eventsERKN5boost10shared_ptrIS2_EE+00000095
[ 41] 0x0000000103db5b03 /Applications/MATLAB_R2014a.app/bin/maci64/libmwmcr.dylib+00035587 _ZN3mcr7runtime17InterpreterThread4Impl3runERKN5boost10shared_ptrIS2_EEPNS2_12init_contextE+00000323
[ 42] 0x0000000103db0b68 /Applications/MATLAB_R2014a.app/bin/maci64/libmwmcr.dylib+00015208 _Z26run_init_and_handle_eventsPv+00000056
[ 43] 0x00007fff96d52268            /usr/lib/system/libsystem_pthread.dylib+00012904 _pthread_body+00000131
[ 44] 0x00007fff96d521e5            /usr/lib/system/libsystem_pthread.dylib+00012773 _pthread_body+00000000
[ 45] 0x00007fff96d5041d            /usr/lib/system/libsystem_pthread.dylib+00005149 thread_start+00000013


This error was detected while a MEX-file was running. If the MEX-file
is not an official MathWorks function, please examine its source code
for errors. Please consult the External Interfaces Guide for information
on debugging MEX-files.

If this problem is reproducible, please submit a Service Request via:
    http://www.mathworks.com/support/contact_us/

A technical support engineer might contact you with further information.

Thank you for your help.** This crash report has been saved to disk as /Users/-meinbenutzername-/matlab_crash_dump.2010-1 **


Caught MathWorks::System::FatalException
[Please exit and restart MATLAB]>>


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.

oscmex problem.tif
 Beschreibung:
Screenshot

Download
 Dateiname:  oscmex problem.tif
 Dateigröße:  302.86 KB
 Heruntergeladen:  254 mal
Private Nachricht senden Benutzer-Profile anzeigen


Untitled.m
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 01.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.02.2015, 13:28     Titel:
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.02.2015, 14:24     Titel:
  Antworten mit Zitat      
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.
Code:


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Untitled.m
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 01.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.02.2015, 15:31     Titel:
  Antworten mit Zitat      
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
Code:
osc_free_address(a);
aufrufe - natürlich vorausgesetzt a wurde vorher mit
Code:
osc_new_adress (ip, port)
angelegt.
Der Versuch osc_free_adress.c mit
Code:
mex osc_free_address.c
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.02.2015, 17:33     Titel:
  Antworten mit Zitat      
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
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.