【问题标题】:mex function undefined error while running matlab project in octave在八度音程中运行 matlab 项目时,mex 函数未定义错误
【发布时间】:2019-03-17 06:50:04
【问题描述】:

我实际上是 matlab 新手。

我正在尝试在我的 ubuntu 机器上以倍频程运行 this matlab 项目。它有一个名为“bm3d_thr”的函数,用于其中一个文件(BM3D-Net/library/bm3d-denoising/BM3D.m 文件的第 342 行),如下所示:

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”)。

问题是当我尝试运行项目时(通过说“演示”),它给出了以下错误:

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 文件的源代码。

任何帮助将不胜感激。

提前致谢。

【问题讨论】:

  • 该 MEX 文件适用于在 64 位 Linux 上运行的 MATLAB。如果不先重新编译它,它将无法与 Octave 一起使用。如果你没有资源,那你就倒霉了。
  • 您尝试运行的项目中的那个库来自另一个项目 (cs.tut.fi/~foi/GCF-BM3D/index.html#ref_software)。原网站不提供 Mex 文件的源代码。
  • 哦!这听起来很不幸。无论如何,感谢@CrisLuengo 和 Rish 的回复。我想,我别无选择,只能离开 octave 并尝试在 matlab 本身中运行该项目。

标签: matlab octave mex


【解决方案1】:

来自 Matlab 的二进制 MEX 文件是 not compatible with Octave。您需要使用 Octave 的 mexmkoctfile --mex 命令从源代码重新编译项目中的所有 MEX 文件。

如果作者没有提供此 MEX 文件的来源,则您是 SOL。在他们的 GitHub 存储库上发布一个问题,要求提供源代码。还有祝你好运。 :)

【讨论】:

    猜你喜欢
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 2013-06-01
    • 2019-08-09
    • 2013-11-11
    • 1970-01-01
    相关资源
    最近更新 更多