запуск старого mex-файла в новых выпусках matlab - PullRequest
6 голосов
/ 12 мая 2009

Я пытаюсь запустить программу, первоначально протестированную на Matlab 6.5, в новом выпуске (R2009a) Программа использует некоторые mex-файлы, и я получаю следующую ошибку при попытке ее запустить:

??? Неверный MEX-файл '/normalizedCut/common_files/sparsifyc.mexglx': normalizedCut / common_files / sparsifyc.mexglx: символ mxGetIr, версия libmx.INTERNAL не определен в файле libmx.so с указанием времени ссылки.

(код, который я пытаюсь настроить, это Normalized cut от Shi & Malic, и его можно найти здесь: http://www.cis.upenn.edu/~jshi/software/files/NcutClustering_7.zip)

Если я пытаюсь запустить код в той же системе, но в Matlab 2007a, он работает нормально.

Есть ли проблема с обратной совместимостью для 2009a? Есть ли где-нибудь в системе флаги, которые я могу изменить, чтобы они работали?

Когда я погуглил, я увидел некоторые ссылки на переменную env LD_LIBRARY_PATH, но что именно к ней нужно добавить, я не смог выяснить.

Спасибо, Яир

Ответы [ 2 ]

4 голосов
/ 14 декабря 2009

Исходный код этих мекс-функций, по-видимому, доступен в источнике «Сегментация изображения с нормализованными срезами» на этой странице: http://www.cis.upenn.edu/~jshi/software/ (в подкаталоге specific_NcutImage_files в распакованном ZIP-архиве)

0 голосов
/ 12 мая 2009

Довольно часто возникают проблемы с запуском mex-функций в разных версиях Matlab. Ошибки, которые вы получаете, выглядят так, как будто они произошли из-за изменений API в Matlab (хотя это меня немного удивляет). У меня было больше всего проблем из-за двоичной несовместимости, вызванной изменениями в gcc. Я бы предложил связаться с Jiambo и спросить его, может ли он создать новую версию или выпустить исходный код.

В худшем случае, вы можете попробовать повторно реализовать эти мекс-функции. Алгоритм нормализованного разреза довольно прост в Matlab (см. Статью Ши и Малик ). По названиям мекс-функций они выглядят так, как будто они в основном дублируют существующие функциональные возможности MATLAB (умножение матриц, разбор матриц). Существует ненулевой шанс, что, если вы повторно реализуете их как обычные функции m-кода, они все равно будут быстрее благодаря многоядерной поддержке, добавленной в Matlab.

...