5

我在将 LibSVM 实现到 MATLAB 时遇到问题。我正在使用 MATLAB R2009a(我也有最新版本,R2012b,但我不使用那个)我将 LibSVM 包 libsvm-3.14 下载到我的 Windows 7 PC 上,其中 MATLAB 和 OCTAVE 接口结合在一起。

我提取了我下载的文件夹。在下面,您可以看到文件夹中包含的内容的打印屏幕。在此处输入图像描述

我应该把我的 libsvm-3.14 提取文件夹放在哪里?我应该把它放在安装在目录中的 MATLAB 的“bin”文件夹下吗?

C:\Program Files\MATLAB\R2009a\bin

我这样做了,然而,它没有成功。如果您清楚地帮助我,我将不胜感激。我只是看了README文件,但看不懂,网上也没有其他说明。

4

3 回答 3

8

目前,将该文件夹放在哪里并不重要。您必须从提取的 libsvm 包的matlab子文件夹中的源代码编译 Matlab-MEX 文件。

下面,我将调用libsvm-3.14(例如:C:\libsvm-3.14)解压的文件夹ROOT(所以下面用C:\libsvm-3.14替换ROOT)。

因此,启动 Matlab,然后在其命令提示符下键入:

cd ROOT
cd matlab
make

现在,在 ROOT/matlab 文件夹中,您应该已经获得了两个 MEX 文件(扩展名为 .mexw32 或 .mexw64)。这些是您将从现在开始使用的文件。您可以丢弃其余的,除了那些文件(也许还有其他一些生成的库)。

根据 Makefile(即 ROOT/matlab/make.m),MEX 文件称为 svmtrain 和 svmpredic(+ 扩展名)。

因此,下一步是在您的 Matlab/toolbox 文件夹下创建一个名为 libsvm/ 的子文件夹,复制其中的两个 MEX 文件,然后将该 libsvm/ 文件夹添加到 Matlab 路径(不是您系统的路径,而是您的Matlab 安装)。

然后,通过键入:

svmtrain

svmpredict

你应该有这两个功能的帮助(使用)。

于 2012-12-19T14:23:50.190 回答
4

在@axeoth 的帮助下,这是解决方案。我按照提取的 libsvm 包的 matlab 子文件夹中的说明文件进行操作。我下载并安装了 Microsoft Visual Studio 2010 并在 MATLAB 的命令窗口上编写了“mex -setup”来为 mex 选择合适的编译器(我在 32 位 PC 中使用 MATLAB R2012b,所以我在此链接中找到了支持的编译器http:// www.mathworks.com/support/compilers/R2012b/win64.html)之后,我按照@axeoth的指示进行操作。我将文件夹的名称更改为 ROOT 并将其移至 Documents/MATLAB。我启动了 MATLAB 并在命令窗口上,我在下面“一个一个”地写了这些

>> cd C:\Users\HUstat\Documents\MATLAB\ROOT\matlab
>> cd matlab
>> make

然后我复制了在 ROOT/matlab 子文件夹中获得的所有内容。我在 MATLAB/toolbox 文件夹下创建了一个名为 libsvm 的新文件夹,并将所有内容粘贴在那里。然后,我使用 MATLAB R2012b 上的“设置路径”按钮将该 libsvm/ 文件夹添加到 Matlab 路径中。之后我写了“svmtrain”和“svmpredict”,所以我得到了这两个命令的帮助。

于 2012-12-21T08:27:52.577 回答
1

对于那些有重大编译器问题的人,我想我会留下一些关于安装编译器主题的额外信息。这是一个令人沮丧的问题,我最终联系了 MATLAB 寻求帮助。我会在上面的帖子中发表评论,但我没有足够的“代表”所以这里是:

我无法通过 Microsoft Visual Studio 2010 或其他方式安装 Microsoft Windows SDK 7.1。我发现这是因为我安装了某个版本的 Microsoft Visual (版本 10.0.04 ......对我来说是问题的原因)。解决方法是卸载 Visual,独立安装 SDK 7.1,然后重新安装 Visual。该过程更详细地写在下面的链接中:

http://www.mathworks.com/matlabcentral/answers/95039-why-does-the-sdk-7-1-installation-fail-with-an-installation-failed-message-on-my-windows-system

也可能是您安装了编译器,但直到 MATLAB“找到”它才被识别。重新安装后发生在我身上。要检查您是否拥有正确的编译器并“找到”它,请运行 mex.getCompilerConfigurations('Any','Installed') 以获取完整列表。然后使用 SDK 7.1 执行 mex -setup,选择 C/C++ 版本而不是 FORTRAN。

我知道这个问题已经得到解答,但希望这可以帮助遇到我同样困境的人。

于 2014-09-29T08:47:07.740 回答