2009-05-12 21 views
6

Estoy tratando de ejecutar un programa originalmente probado en Matlab 6.5 en una nueva versión (R2009a) El programa usa algunos archivos mex, y me sale el siguiente error cuando intento ejecutarlo :ejecutando un viejo archivo mex en nuevas versiones de matlab

??? El archivo MEX no es válido '/normalizedCut/common_files/sparsifyc.mexglx': normalizedCut/common_files/sparsifyc.mexglx: símbolo mxGetIr, versión libmx.INTERNAL no está definido en el archivo libmx.so con referencia de tiempo de enlace.

(el código que estoy tratando de cuba es de corte normalizado por Shi & málico, y se puede encontrar aquí: http://www.cis.upenn.edu/~jshi/software/files/NcutClustering_7.zip)

Si trato de ejecutar el código en el mismo sistema, pero 2007a Matlab se ejecuta De acuerdo.

¿Hay algún problema con la compatibilidad con versiones anteriores para 2009a? ¿Hay algún indicador en algún lugar del sistema que pueda cambiar para ayudarlo a funcionar?

Cuando lo busqué en Google vi algunas referencias a la variable de entorno LD_LIBRARY_PATH, pero no pude averiguar qué se debería agregar exactamente a ella.

Gracias, Yair

Respuesta

4

El código fuente de las funciones mex parece estar disponible en el "Segmentación de imágenes con cortes normalizados" fuente de esta página: http://www.cis.upenn.edu/~jshi/software/ (en el subdirectorio specific_NcutImage_files en el .zip descomprimido)

0

Es bastante común que haya problemas para ejecutar funciones mex con diferentes versiones de Matlab. Parece que los errores que recibes se deben a cambios de API en Matlab (aunque eso me sorprende un poco). He tenido el mayor problema debido a las incompatibilidades binarias inducidas por los cambios en gcc. Sugiero contactar a Jiambo y preguntarle si puede construir una nueva versión o liberar la fuente.

En el peor de los casos, podría intentar volver a implementar esas funciones mex. El algoritmo de corte normalizado es bastante sencillo en Matlab (ver Shi and Malik paper). Por los nombres de las funciones mex, parece que están duplicando la funcionalidad de los matlab existentes (multiplicación de matrices, escarsificación de matrices). Existe una posibilidad no nula de que si los vuelve a implementar como funciones regulares de m-code serían más rápidos de todos modos debido al soporte multinúcleo que se ha agregado a Matlab.

Cuestiones relacionadas