代码之家  ›  专栏  ›  技术社区  ›  Naveen Kumar

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

  •  0
  • Naveen Kumar  · 技术社区  · 6 年前

    我对matlab还不熟悉。

    我想逃跑 this 我的ubuntu机器上的八进制的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文件的源代码。

    任何帮助都将不胜感激。

    提前谢谢。

    0 回复  |  直到 6 年前
        1
  •  1
  •   Andrew Janke    6 年前

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

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