首页 > 解决方案 > 在八度音程中运行matlab项目时,mex函数未定义错误

问题描述

我实际上是matlab的新手。

我正在尝试在我的 ubuntu 机器上以 octave 运行这个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 文件的源代码。

任何帮助,将不胜感激。

提前致谢。

标签: matlaboctavemex

解决方案


Matlab 中的二进制 MEX 文件与 Octave 不兼容。您需要使用 Octavemexmkoctfile --mex命令从源代码重新编译项目中的所有 MEX 文件。

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


推荐阅读