MinGW全称Minimalist GNU For Windows,是个精简的Windows平台C/C++、ADA及Fortran编译器,相比Cygwin而言,体积要小很多,使用较为方便。MinGW提供了一套完整的开源编译工具集,以适合Windows平台应用开发,且不依赖任何第三方C运行时库。
MinGW包括:
注:本文测试环境为Windows 7 SP1+MinGW 20120426。
MinGW官方网址:http://www.mingw.org/
下载地址:http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/
下载后只是个安装器,需要在线下载真正的安装内容,所以速度不会快。具体步骤如下:
有两个选择,一个是当前打包版本,另一个是下载最新版本。只要你的安装器是从官方下载的,选择前者即可,结果一般就是最新版本。
默认安装到C:\MinGW
这个根据大家需要选择安装组件(C编译器、C++编译器、Fortran编译器、ObjC编译器、Ada编译器等),一般选择C/C++编译器即可,看各位用途确定,组件列表中还有MSYS小系统等可供选择。
依次鼠标点击桌面“我的电脑”->选择左侧的“高级系统设置”,选择“高级”->“环境变量”,然后再Path里增加;C:\MinGW\bin声明。点击确定。
小提示:设置完成后,Windows似乎不会自动更新环境变量,除非重启机子,那么我们可以通过在下面的命令行中,胡乱设置一下PATH(比如SET PATH=C:\),然后退出命令行,那么系统环境变量就会被强制刷新。
开始运行,输入CMD,回车并运行,输入gcc -v查看编译器版本。如下图:
测试文件test.cpp,代码如下(下面为C代码,只是使用G++来编译而已)
1 |
#include |
2 |
3 |
int main() { |
4 |
printf ( "Hello World!" ); |
5 |
return 0; |
6 |
} |
编译命令如下:
g++ test.cpp -o test
输出结果为:test.exe
输入test回车,结果如下:
参考资料:http://www.mingw.org/wiki/InstallationHOWTOforMinGW
文章来自:http://www.metsky.com/archives/588.html
====================================================================================
(以上是转载他人的日志,设置mingw参见:http://jingyan.baidu.com/album/455a99509c76d8a1662778f6.html?picindex=5
下载的时候是选择了C++和c编译器,但是安装完成之后,进行libsvm的编译时matlab并没有显示所安装的组件,让我很是纳闷,然后按照网上的一 些教程我就安装了VC6.0编译器,安装完成之后才发现,我所安装的MATLAB2015b版本中是不支持vc6.0编译器的,这也是我在MATLAB官网上查 看https://cn.mathworks.com/support/sysreq/previous_releases.html?s_cid=pi_scl_4_R2015b_win64才知道的。之后下载了Microsoft visual studio professional2013这才算是搞定了这一步。
1.在此之前我们应该现将工作路径和当前路径设置好
工作路径:设置路径->添加并包含子文件夹...->添加C:\Program Files\MATLAB\R2015b\libsvm-3.22->保存
当前路径:C:\Program Files\MATLAB\R2015b\libsvm-3.22\matlab
2.进行编译器的配置
>>mex -setup
MEX 配置为使用 'Microsoft Visual C++ 2013 Professional (C)' 以进行 C 语言编译。
警告: MATLAB C 和 Fortran API 已更改,现可支持
包含 2^32-1 个以上元素的 MATLAB 变量。不久以后,
您需要更新代码以利用
新的 API。您可以在以下网址找到相关详细信息:
http://www.mathworks.com/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html。
要选择不同的语言,请从以下选项中选择一种命令:
>> mex -setup C++
mex -setup FORTRAN
MEX 配置为使用 'Microsoft Visual C++ 2013 Professional' 以进行 C++ 语言编译。
警告: MATLAB C 和 Fortran API 已更改,现可支持
包含 2^32-1 个以上元素的 MATLAB 变量。不久以后,
您需要更新代码以利用
新的 API。您可以在以下网址找到相关详细信息:
这里的警告是不用管的,之后是进行文件的编译。
3.编译
进行c文件编译,因为本身libsvm工具箱是用c++语言编写的,所以要在matlab平台下使用,要进行编译,编译成.mexw文件。实际上在windows文件夹下有已经编译好的.mexw文件
在这里遇到了问题如下:
>> make%%%%%利用文件夹里的make文件进行编译
Error: C:\Program Files\MATLAB\R2015b\libsvm-3.22\matlab\make.m failed (line 13)
未找到 C:\Program Files\MATLAB\R2015b\libsvm-3.22\libsvmread.c;请检查您是否位于正确的当前文件夹,并检查 'C:\Program
Files\MATLAB\R2015b\libsvm-3.22\libsvmread.c' 的拼写。
=> Please check README for detailed instructions.
解决办法:这个错误出现的问题应该是matlab程序没有取得管理员权限,不能在program files文件夹下添加文件,所以我们的解决办法是退出matlab程序,打开matlab程序时选用使用管理员权限打开matlab这样在common window输入“make”就可以正常编译出64位文件了(不知道以后运行matlab需不需要每次都以管理员身份运行)
编译完成后,在当前目录下回出现svmtrain.mexw64、svmpredict.mexw64(64位系统)或者svmtrain.mexw32、svmpredict.mexw32(32位系统)这两个文件,把文件名svmtrain和svmpredict相应改成libsvmtrain和libsvmpredict。
这是因为Matlab中自带有SVM的工具箱,而且其函数名字就是svmtrain和svmpredict,和LIBSVM默认的名字一样,在实际使用的时候有时会产生一定的问题,比如想调用LIBSVM的变成了调用Matlab SVM。
如果有进行重命名的,以后使用LIBSVM时一律使用libsvmtrain和libsvmpredict这两个名字进行调用。
LIBSVM软件包中自带有测试数据,为软件包根目录下的heart_scale文件,可以用来测试LIBSVM是否安装成功。这里的heart_scale文件不能用Matlab的load进行读取,需要使用libsvmread读取。
进入LIBSVM的根目录运行以下代码(因为heart_scale文件没有被添加进搜索路径中,其他路径下无法访问这个文件):
[heart_scale_label, heart_scale_inst] = libsvmread('heart_scale'); model = libsvmtrain(heart_scale_label, heart_scale_inst, '-c 1 -g 0.07'); [predict_label, accuracy, dec_values] = libsvmpredict(heart_scale_label, heart_scale_inst, model);
如果LIBSVM安装正确的话,会出现以下的运行结果,显示正确率为86.6667%。
* optimization finished, #iter = 134 nu = 0.433785 obj = -101.855060, rho = 0.426412 nSV = 130, nBSV = 107 Total nSV = 130 Accuracy = 86.6667% (234/270) (classification)
[label_vector, instance_matrix] = libsvmread(‘data.txt’);
这个函数输入的是文件的名字,输出为样本的类标和对应的特征。
libsvmwrite函数可以把Matlab的矩阵存储称为LIBSVM格式的文件。
libsvmwrite(‘data.txt’, label_vector, instance_matrix]
这个函数有三个输入,分别为保存的文件名、样本的类标和对应的特征(必须为double类型的稀疏矩阵)。