문제

원래 Matlab 6.5에서 테스트 한 프로그램을 새 릴리스 (R2009a)에서 실행하려고합니다. 이 프로그램은 일부 mex 파일을 사용하며 실행하려고 할 때 다음 오류가 발생합니다.

???잘못된 MEX 파일 '/normalizedCut/common_files/sparsifyc.mexglx':NormalizedCut/common_files/sparsifyc.mexglx:기호 mxGetIr, 버전 libmx입니다. INTERNAL이 링크 시간 참조가 있는 파일 libmx.so 에 정의되지 않았습니다.

(내가 조정하려는 코드는 Shi & Malic이 잘라낸 Normalized이며 여기에서 찾을 수 있습니다.http://www.cis.upenn.edu/~jshi/software/files/NcutClustering_7.zip)

Matlab 2007a가 아닌 동일한 시스템에서 코드를 실행하려고 하면 정상적으로 실행됩니다.

2009a의 이전 버전과의 호환성에 문제가 있습니까?시스템 어딘가에 작동을 돕기 위해 변경할 수 있는 플래그가 있습니까?

Google에서 검색했을 때 LD_LIBRARY_PATH env 변수에 대한 참조를 보았지만 여기에 정확히 무엇을 추가해야 하는지 알 수 없었습니다.

감사 야이르

도움이 되었습니까?

해결책

해당 MEX 기능의 소스 코드는이 페이지의 "정규화 된 컷을 사용한 이미지 분할"소스에서 사용할 수있는 것으로 보입니다. http://www.cis.upenn.edu/~jshi/software/ (포장되지 않은 .zip의 특정 _ncutimage_files 서브 디렉토리에서)

다른 팁

다양한 버전의 Matlab에서 mex 함수를 실행하는 데 문제가 발생하는 것은 매우 흔한 일입니다.귀하가 겪고 있는 오류는 Matlab의 API 변경으로 인해 발생한 것처럼 보입니다(약간 놀랍지만).저는 gcc의 변경으로 인한 바이너리 비호환성 때문에 가장 문제를 겪었습니다.나는 Jiambo에게 연락하여 새 버전을 만들거나 소스를 공개할 수 있는지 물어볼 것을 제안합니다.

최악의 경우에는 해당 mex 함수를 다시 구현해 볼 수도 있습니다.정규화된 절단 알고리즘은 Matlab에서 매우 간단합니다(참조: 시와 말릭 종이).mex 함수의 이름으로 보면 기존 matlab 기능(행렬 곱셈, 행렬 희소화)을 대부분 복제하는 것처럼 보입니다.일반 m 코드 함수로 다시 구현하면 Matlab에 추가된 멀티코어 지원으로 인해 더 빨라질 가능성이 0이 아닙니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top