2009-05-12 6 views
6

Ich versuche, ein Programm auf Matlab 6.5 auf einer neuen Version (R2009a) getestet getestet Das Programm verwendet einige mex-Dateien, und ich bekomme den folgenden Fehler beim Versuch, es auszuführen :läuft alte mex-Datei auf neue Matlab-Releases

??? Ungültige MEX-Datei '/normalizedCut/common_files/sparsifyc.mexglx': normalizedCut/common_files/sparsifyc.mexglx: Symbol mxGetIr, Version libmx.INTERNAL nicht in Datei libmx.so mit Link-Zeit-Referenz definiert.

(der Code, den ich zu tun versuchen, ist Normalized Schnitt von Shi & Malic und kann hier gefunden werden: http://www.cis.upenn.edu/~jshi/software/files/NcutClustering_7.zip)

Wenn ich versuche, den Code auf dem gleichen System aber Matlab 2007a laufen läuft OK.

Gibt es ein Problem mit der Abwärtskompatibilität für 2009a? Gibt es Flags irgendwo im System, die ich ändern kann, damit es funktioniert?

Als ich es googled sah ich einige Verweise auf die Variable LD_LIBRARY_PATH env, aber was genau hinzugefügt werden sollte, konnte ich nicht herausfinden.

Danke, Yair

Antwort

4

Der Quellcode für die mex Funktionen erscheint in der „Bildsegmentierung mit normalisierten cuts“ Quelle auf dieser Seite zur Verfügung steht: http://www.cis.upenn.edu/~jshi/software/ (im specific_NcutImage_files Unterverzeichnis in der entpackten ZIP)

0

Es ist ziemlich für es gemeinsame Probleme bei der Ausführung mex Funktionen mit verschiedenen Versionen von Matlab zu sein. Die Fehler, die Sie bekommen, sehen aus, als wären sie auf API-Änderungen in Matlab zurückzuführen (obwohl mich das ein wenig überrascht). Ich hatte die größten Probleme wegen binärer Inkompatibilitäten, die durch Änderungen in gcc verursacht wurden. Ich würde vorschlagen, Jiambo zu kontaktieren und ihn zu fragen, ob er eine neue Version erstellen oder die Quelle veröffentlichen kann.

Im schlimmsten Fall könnten Sie versuchen, diese Mex-Funktionen erneut zu implementieren. Der normalisierte Cut-Algorithmus ist in Matlab ziemlich einfach (siehe Shi and Malik paper). Durch die Namen der mex-Funktionen sehen sie so aus, als würden sie die vorhandene Matlab-Funktionalität (Matrixmultiplikation, Matrix-Sparsifikation) größtenteils duplizieren. Es gibt eine Chance von Null, dass, wenn Sie sie als normale M-Code-Funktionen neu implementieren würden, sie sowieso schneller wären, aufgrund der Multicore-Unterstützung, die Matlab hinzugefügt wurde.

Verwandte Themen