关于libsvm中matlab入口和c++入口的不同
2016-01-15 14:59
537 查看
前几天一直中疑惑,我在svm-train.c中改了语句,为什么从matlab运行代码后,看不到输出,原来是把这两个入口搞错了呀。
先写上文件夹目录,这样不会搞错:
E:\svm\libsvm-master\svm.cpp svm.h svm-predict.c svm-train.c
E:\svm\libsvm-master\matlab\ libsvmread.c libsvmwrite.c svm_model_matlab.c svm_model_matlab.h svmpredict.c svmtrain.c
而之前,我在matlab中调用的svmtrain和svmpredict函数,是来自于libsvm-master中的matlab文件夹下的这两个函数。
因此,要想从matlab中输出自己的东西,可以对这两个文件进行修改。输出语句,例如:
mexPrintf("***************************");
而svmtrain.c文件中,mexFunction函数是对matlab语句输入中的model=svmtrain(Y_train,X_train);
进行解析,然后调用libsvm-master中的svm.cpp进行执行。
故,matlab文件夹下的两个函数,是从c++ ----.>matlab输出的一个封装。
而正在进行算法执行的,是调用libsvm-master中的svm.cpp进行执行。
而对于c++开发人员,对数据的输入解析,调用的是svm-train.c 和svm-predict.c这两个文件。因此要从命令行输入训练和测试的语句,进行算法运行。
简单的讲,matlab文件夹下的svmtrain和svmpredict函数,和libsvm-master中的svm-train.c 和svm-predict.c这两个函数分别是从matlab和c++两个不同的入口输入数据进行执行的。
编译:
(1)若对matlab输出进行修改后,将当前文件路径改到E:\svm\libsvm-master\matlab下,然后用make命令进行编译。
(2)若对从命令行输出进行修改后,则进行以下的编译:
1. 环境变量设置
a) cmd到D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64>
b) 执行vcvars64.bat
2. 编译程序
a) 切换到工作目录,例如E:\svm\libsvm-master>
b) 执行nmake -f Makefile.win clean all
执行:
(1)从matlab入口,则执行以下语句:
model=svmtrain(Y_train,X_train);%,,cmd
[predict_label, acc, prob_estimates] = svmpredict(Y_test, X_test,model);
(2)从c++入口或运行行入口,则执行以下语句:
1.进入E:\svm\libsvm-master\windows>
2.训练输入 svm-train.exe ../data.txt train.model 其中data.txt在windows的上一层中
3.测试输入 svm-predict.exe ../test.txt train.model result 结果会在result中。Text.txt是 测试数据
若有的人的libsvm中没有matlab文件夹,可以在下面下载: http://www.csie.ntu.edu.tw/~cjlin/libsvm/index.html#matlab
其中的,
另外,当中svm.cpp或svmtrain.c svmpredict.c中修改后,注意需要重新编译:
注:修改完svm.cpp文件后,需重新编译,
进入以下并执行: E:\svm\libsvm-master>nmake -f Makefile.win clean all
同时也要对matlab文件夹中的进行编译,
当前路径进入以下并执行make 命令。 E:\svm\libsvm-master\matlab
这样matlab中输出的才是更改以后的,不然matlab不会输出修改后的程序。
好了,再有什么需要补充的再补充进去吧。
先写上文件夹目录,这样不会搞错:
E:\svm\libsvm-master\svm.cpp svm.h svm-predict.c svm-train.c
E:\svm\libsvm-master\matlab\ libsvmread.c libsvmwrite.c svm_model_matlab.c svm_model_matlab.h svmpredict.c svmtrain.c
而之前,我在matlab中调用的svmtrain和svmpredict函数,是来自于libsvm-master中的matlab文件夹下的这两个函数。
因此,要想从matlab中输出自己的东西,可以对这两个文件进行修改。输出语句,例如:
mexPrintf("***************************");
而svmtrain.c文件中,mexFunction函数是对matlab语句输入中的model=svmtrain(Y_train,X_train);
进行解析,然后调用libsvm-master中的svm.cpp进行执行。
故,matlab文件夹下的两个函数,是从c++ ----.>matlab输出的一个封装。
而正在进行算法执行的,是调用libsvm-master中的svm.cpp进行执行。
而对于c++开发人员,对数据的输入解析,调用的是svm-train.c 和svm-predict.c这两个文件。因此要从命令行输入训练和测试的语句,进行算法运行。
简单的讲,matlab文件夹下的svmtrain和svmpredict函数,和libsvm-master中的svm-train.c 和svm-predict.c这两个函数分别是从matlab和c++两个不同的入口输入数据进行执行的。
编译:
(1)若对matlab输出进行修改后,将当前文件路径改到E:\svm\libsvm-master\matlab下,然后用make命令进行编译。
(2)若对从命令行输出进行修改后,则进行以下的编译:
1. 环境变量设置
a) cmd到D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64>
b) 执行vcvars64.bat
2. 编译程序
a) 切换到工作目录,例如E:\svm\libsvm-master>
b) 执行nmake -f Makefile.win clean all
执行:
(1)从matlab入口,则执行以下语句:
model=svmtrain(Y_train,X_train);%,,cmd
[predict_label, acc, prob_estimates] = svmpredict(Y_test, X_test,model);
(2)从c++入口或运行行入口,则执行以下语句:
1.进入E:\svm\libsvm-master\windows>
2.训练输入 svm-train.exe ../data.txt train.model 其中data.txt在windows的上一层中
3.测试输入 svm-predict.exe ../test.txt train.model result 结果会在result中。Text.txt是 测试数据
若有的人的libsvm中没有matlab文件夹,可以在下面下载: http://www.csie.ntu.edu.tw/~cjlin/libsvm/index.html#matlab
其中的,
A simple MATLAB and OCTAVE interface | LIBSVM authors at National Taiwan University. | The latest | Included inLIBSVMpackage |
注:修改完svm.cpp文件后,需重新编译,
进入以下并执行: E:\svm\libsvm-master>nmake -f Makefile.win clean all
同时也要对matlab文件夹中的进行编译,
当前路径进入以下并执行make 命令。 E:\svm\libsvm-master\matlab
这样matlab中输出的才是更改以后的,不然matlab不会输出修改后的程序。
好了,再有什么需要补充的再补充进去吧。
相关文章推荐
- Aut2Exe编译au3脚本为可执行文件
- CentOS 6.3下编译安装Ruby 2.0笔记
- 把Lua编译进nginx步骤方法
- Lua中编译执行代码相关的函数详解
- Chrome Visual Studio 2005下的编译过程
- Windows下使用Cygwin编译MySQL客户端
- android的编译和运行过程深入分析
- 解析在main函数之前调用函数以及对设计的作用详解
- c#中xml文档注释编译dll引用到其它项目示例
- Lua cjson模块编译笔记及错误解决方法
- SQLSERVER编译与重编译发生场景及重用的利弊介绍
- 浅析使用Turck-mmcache编译来加速、优化PHP代码
- 如何编译libfreetype方法详解
- 深入理解C语言中编译相关的常见错误
- 在VS2008中编译MYSQL5.1.48的方法
- libsvm支持向量机回归示例
- Nginx编译参数大全 configure参数中文详解
- centos下编译安装mysql报错解决方案
- java和matlab画多边形闭合折线图示例讲解
- Lua的编译、执行和调试技术介绍