在倍频程中运行matlab项目时的mex函数未定义错误

时间:2019-03-17 06:50:04

标签: matlab octave mex

我实际上是Matlab的新手。

我正在尝试在Ubuntu计算机上以八度运行this matlab项目。它具有在其中一个文件(BM3D-Net / library / bm3d-denoising / BM3D.m文件的第342行)中使用的名称为“ bm3d_thr”的功能,如下所示:

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

任何帮助将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:1)

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

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