类型为"double"的输入参数的未定义函数

Undefined function for input arguments of type 'double'

本文关键字:未定义 函数 参数 输入 double 类型      更新时间:2023-10-16

我 http://cazencott.info/dotclear/public/code/scones.zip 从这里下载了MATLAB代码。当我运行"demo"时,它说"未定义的函数'maxflowmex'用于'double'类型的输入参数"。实际上,文件夹中只有一个c ++文件"maxflowmex.cpp"(已添加到路径中)。它是否需要"maxflowmex.m"而不是"maxflowmex.cpp"才能正常运行?还是其他一些方法调用"maxflowmex.cpp"?或者我需要编译一些东西?

我只是看了一下zip文件。 maxflow目录中有一些 MEX 包装器,MATLAB 调用这些函数,这些函数是用 C 编写的,但在 MATLAB 中可以运行。 在运行这些 MEX 包装器之前,需要使用与您的操作系统兼容的编译器进行编译。

但是,有预编译的二进制文件,但我只看到Linux和Mac OS的64位二进制文件,而没有看到Windows二进制文件。 由于您无法运行它们,因此您很可能运行的是 32 位操作系统或 Windows。 我怀疑您运行的是Windows或32位Linux,因为Mac OS默认为64位。

您需要运行一个make.m脚本,以便为您的计算机编译maxflow库。 编译库后,运行demo.m应该会成功。

在执行此操作之前,您需要确保通过在命令窗口中执行mex -setup来设置mex,然后选择正确的编译器。 执行此操作后,运行maxflow目录中的make.m

如果你没有编译器,如果你使用的是Linux,那么对gcc包进行apt-get应该足够好了,所以:

sudo apt-get update
sudo apt-get install gcc-4.6-base g++-4.6 cpp-4.6 libgomp1 libquadmath0 libc6-dev

如果您使用的是 Windows,那么您需要支持的编译器将取决于您使用的 MATLAB 版本。 我假设您使用的是最新版本,因此下载最新版本的Visual Studio Express以及SDK就足够了。

  • http://www.visualstudio.com/en-us/products/visual-studio-express-vs.aspx
  • http://www.microsoft.com/en-us/download/details.aspx?id=40758