2

我想在 Octave 上使用 libsvm(在 Windows 平台上)。如果我从自述文件和互联网上的几十个帖子中理解得很好,我不必制作或编译任何东西,只需将 mexw32 和 mexw64 文件复制到我的 Octave 工作目录。如果我这样做,什么也不会发生,当我想运行我的示例代码时,错误与以前一样:

error: `libsvmread' undefined near line 7 column 11

我也尝试从 Octave 命令提示符运行 make ,但后来出现其他错误:

warning: unable to find mkoctfile in expected location: `c:\Program Files (x86)\
Octave-3.6.2\bin\mkoctfile-3.6.2'
warning: mkoctfile exited with failure status

但是给定目录中有一个mkoctfile-3.6.2.exe ......

我也已经尝试过编辑该octaverc文件......但它没有帮助。

任何想法如何正确安装 libsvm?

4

1 回答 1

2

根据matlabLIBSVM 发行版子文件夹中的 README 文件(我查看了 3.13),包含的二进制文件仅适用于 Windows 上的 64 位版本的 Matlab。这些二进制文件绝对不适用于我在 Windows 上的 Octave 版本!为了让 LIBSVM 与 Octave 一起工作,我们必须构建 Octave 特定的 .mex 文件并将它们放在 Octave 可以找到它们的地方。

我在http://flyingpies.wordpress.com/2012/11/20/getting-libsvm-to-work-with-octave-on-windows/汇总了该过程的演练。简而言之,步骤是:

  1. 确保您拥有使用 Visual Studio 构建的 Windows 版本的 Octave(即不是 cygwin 或 mingw 版本。)我确信这些其他版本可以采取类似的步骤,因为我没有尝试过。

  2. 获取 Visual Studio 2010 或 2012 的副本。对我来说都可以。你只需要那个大包中的命令行 C 编译器和链接器。VS的快速版本可从 Microsoft 免费获得,但我没有尝试过。

  3. 在命令提示符窗口中,运行vcvarsall.batVisual Studio 的 Visual C 文件夹中的批处理文件,以准备好编译环境。

  4. 将 Octave bin 文件夹添加到您的路径(C:\Program Files (x86)\Octave-3.6.2\bin在我的机器上)。这解决了您遇到的“找不到 mkoctfile”问题。

  5. 编辑 Octave 的 math.h 包含文件以引用 Visual Studio 的 math.h 的正确位置。我不得不将第 74 行的c:\Program Files (x86)\Octave-3.6.2\include\math.hfrom更改c:/Program Files/Microsoft Visual Studio 10.0/VC/include/math.hc:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/include/math.h

  6. 在使用 vcvarsall 和路径启动的同一命令提示符窗口中,启动 Octave,导航到 LIBSVM 发行版的 matlab 子文件夹,然后运行 ​​make 命令。这将执行该文件夹中的 make.m 文件,该文件将构建 .mex 文件。

  7. 将 .mex 文件复制到 Octave 可以找到它们的文件夹。我把它们放进去C:\Program Files (x86)\Octave-3.6.2\lib\octave\3.6.2\site\oct\i686-pc-mingw32

此时,如果启动 Octave,LIBSVM 接口命令应该可用。例如,该svmtrain命令应该运行。

于 2012-11-21T06:51:13.460 回答