在八度音程中运行matlab项目时,mex函数未定义错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在八度音程中运行matlab项目时,mex函数未定义错误相关的知识,希望对你有一定的参考价值。

我实际上是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”)。

问题是当我尝试运行项目时(通过说'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文件的源代码。

任何帮助,将不胜感激。

提前致谢。

答案

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

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

以上是关于在八度音程中运行matlab项目时,mex函数未定义错误的主要内容,如果未能解决你的问题,请参考以下文章

如何将结构转换为hdf5格式并用八度音程保存

MATLAB + Mex + OpenCV:链接和编译正确,但在运行时找不到库

rand 函数是不是在 MATLAB/Octave 中产生 0 或 1 的值?

无法使用 mkoctfile --mex 以八度音阶构建 mex 文件

如何在运行时制作 mex 函数 printf?

Matlab MEX-函数副作用