MATLAB genlouvain函数,group_handler缺少'char'输入?

时间:2014-10-11 16:32:53

标签: matlab

我试图使用genlouvain函数在矩阵中查找社区结构。我说错了 未定义的功能' group_handler'对于' char'。

类型的输入参数

genlouvain错误(第272行)         group_handler('分配',Y); 不确定是什么问题。我的工作空间中没有任何字符,而且我给出的函数矩阵是对称的......我想知道是否需要在某处定义一个char变量来给它另一个输入?有没有其他人使用genlouvain函数并且有char输入参数的问题?

2 个答案:

答案 0 :(得分:1)

genlouvain不是本机MATLAB函数,我不得不谷歌。我在这里找到了它:http://netwiki.amath.unc.edu/GenLouvain/GenLouvain

如果查看README文件,它会说代码是用MEX编写的,并且是为64位Mac OS,Windows和Linux预编译的。

您的操作系统可能不是这些,并且README表示如果您的操作系统不是64位,则在运​​行代码之前需要编译 MEX代码。具体来说,您的操作系统没有预编译的函数,group_handler是编译代码后生成的函数(检查.zip文件中的private文件夹)。由于没有针对您的操作系统的group_handler函数,MATLAB会抱怨,因为它无法找到该文件。

要为您的操作系统生成正确的编译函数,以便运行此代码,请进入MEX_SRC目录并运行compile_mex.m脚本。


但是,您需要确保已安装mex。因此,在运行mex -setup之前,在命令提示符中键入compile_mex.m,并确保选择适合您的操作系统的编译器。在Windows中,这很可能是Visual C ++编译器,Mac OS会有自己的gcc(实际上是clang),而Linux本身很可能是gcc

执行此操作后,您的功能现在应该可以正常工作。

FWIW,如果您真的阅读了README文件,或者访问了网站并查看了常见问题解答,那么您可以从那里得到答案。

答案 1 :(得分:1)

我提出了这个问题的第二个答案,因为我遇到了同样的错误,尽管我运行的是64位MATLAB:

genlouvain.m脚本有多个依赖项,保存为C代码,而不是.m脚本(例如group_handler),您也应该下载它们;确保它们都在您运行genlouvain脚本的同一文件夹中。