ошибка неопределенной функции mex при запуске проекта matlab в octave

#matlab #octave #mex

#matlab #octave #mex

Вопрос:

На самом деле я новичок в matlab.

Я пытаюсь запустить этот проект matlab в octave на моей машине Ubuntu. В нем есть функция с именем ‘bm3d_thr’, используемая в одном из файлов (строка 342 файла BM3D-Net / library /bm3d-denoising / BM3D.m), как показано ниже:

 y_hat = bm3d_thr(z, hadper_trans_single_den, Nstep, N1, N2, lambda_thr2D,...
    lambda_thr3D, tau_match*N1*N1/(255*255), (Ns-1)/2, (sigma/255), thrToIncStep, single(Tfor), single(Tinv)', inverse_hadper_trans_single_den, single(thr_mask), Wwin2D, smallLN, stepFS );
  

Также у меня есть соответствующий mex-файл (с именем ‘bm3d_thr.mexa64’) в моем octave path.

Проблема в том, что когда я пытаюсь запустить проект (сказав «demo»), он выдает следующую ошибку:

 error: 'bm3d_thr' undefined near line 342 column 9
error: called from
    BM3D at line 342 column 7
    bm3d_net_res at line 5 column 7
    demo at line 9 column 7
  

Может ли кто-нибудь, пожалуйста, помочь мне выяснить, что здесь происходит не так, и заставить это работать. Я предполагаю, что проблема в том, что файл mex не был скомпилирован на моем компьютере, но авторы не предоставили исходный код для этого файла mex.

Будем признательны за любую помощь.

Заранее спасибо.

Комментарии:

1. Этот MEX-файл предназначен для MATLAB, работающего в 64-разрядном Linux. Он не будет работать с Octave без его предварительной перекомпиляции. Если у вас нет исходных текстов, вам не повезло.

2. Эта библиотека в проекте, который вы пытались запустить, взята из anthor project ( cs.tut.fi /~foi/GCF-BM3D/index.html#ref_software ). Исходный сайт не предоставляет исходный код файлов Mex.

3. о! Это звучит неудачно. В любом случае, спасибо @CrisLuengo и Rish за ответ. Я думаю, у меня нет другого выбора, кроме как уйти из octave и попробовать запустить проект в самом matlab.

Ответ №1:

Двоичные MEX-файлы из Matlab несовместимы с Octave. Вам необходимо перекомпилировать все MEX-файлы в вашем проекте из исходного кода, используя команды Octave mex или mkoctfile --mex .

Если авторы не предоставили исходный код для этого MEX-файла, вы SOL. Опубликуйте проблему в их репозитории GitHub с запросом исходного кода. И удачи. 🙂