資源簡介
基于MATLAB的SVM模塊源代碼基于MATLAB的SVM模塊源代碼
代碼片段和文件信息
#include?
#include?
#include?“svm.h“
#include?“mex.h“
#ifdef?MX_API_VER
#if?MX_API_VER?0x07030000
typedef?int?mwIndex;
#endif
#endif
#define?NUM_OF_RETURN_FIELD?11
#define?Malloc(typen)?(type?*)malloc((n)*sizeof(type))
static?const?char?*field_names[]?=?{
“Parameters“
“nr_class“
“totalSV“
“rho“
“Label“
“sv_indices“
“ProbA“
“ProbB“
“nSV“
“sv_coef“
“SVs“
};
const?char?*model_to_matlab_structure(mxArray?*plhs[]?int?num_of_feature?struct?svm_model?*model)
{
int?i?j?n;
double?*ptr;
mxArray?*return_model?**rhs;
int?out_id?=?0;
rhs?=?(mxArray?**)mxMalloc(sizeof(mxArray?*)*NUM_OF_RETURN_FIELD);
//?Parameters
rhs[out_id]?=?mxCreateDoubleMatrix(5?1?mxREAL);
ptr?=?mxGetPr(rhs[out_id]);
ptr[0]?=?model->param.svm_type;
ptr[1]?=?model->param.kernel_type;
ptr[2]?=?model->param.degree;
ptr[3]?=?model->param.gamma;
ptr[4]?=?model->param.coef0;
out_id++;
//?nr_class
rhs[out_id]?=?mxCreateDoubleMatrix(1?1?mxREAL);
ptr?=?mxGetPr(rhs[out_id]);
ptr[0]?=?model->nr_class;
out_id++;
//?total?SV
rhs[out_id]?=?mxCreateDoubleMatrix(1?1?mxREAL);
ptr?=?mxGetPr(rhs[out_id]);
ptr[0]?=?model->l;
out_id++;
//?rho
n?=?model->nr_class*(model->nr_class-1)/2;
rhs[out_id]?=?mxCreateDoubleMatrix(n?1?mxREAL);
ptr?=?mxGetPr(rhs[out_id]);
for(i?=?0;?i? ptr[i]?=?model->rho[i];
out_id++;
//?Label
if(model->label)
{
rhs[out_id]?=?mxCreateDoubleMatrix(model->nr_class?1?mxREAL);
ptr?=?mxGetPr(rhs[out_id]);
for(i?=?0;?i?nr_class;?i++)
ptr[i]?=?model->label[i];
}
else
rhs[out_id]?=?mxCreateDoubleMatrix(0?0?mxREAL);
out_id++;
//?sv_indices
if(model->sv_indices)
{
rhs[out_id]?=?mxCreateDoubleMatrix(model->l?1?mxREAL);
ptr?=?mxGetPr(rhs[out_id]);
for(i?=?0;?i?l;?i++)
ptr[i]?=?model->sv_indices[i];
}
else
rhs[out_id]?=?mxCreateDoubleMatrix(0?0?mxREAL);
out_id++;
//?probA
if(model->probA?!=?NULL)
{
rhs[out_id]?=?mxCreateDoubleMatrix(n?1?mxREAL);
ptr?=?mxGetPr(rhs[out_id]);
for(i?=?0;?i? ptr[i]?=?model->probA[i];
}
else
rhs[out_id]?=?mxCreateDoubleMatrix(0?0?mxREAL);
out_id?++;
//?probB
if(model->probB?!=?NULL)
{
rhs[out_id]?=?mxCreateDoubleMatrix(n?1?mxREAL);
ptr?=?mxGetPr(rhs[out_id]);
for(i?=?0;?i? ptr[i]?=?model->probB[i];
}
else
rhs[out_id]?=?mxCreateDoubleMatrix(0?0?mxREAL);
out_id++;
//?nSV
if(model->nSV)
{
rhs[out_id]?=?mxCreateDoubleMatrix(model->nr_class?1?mxREAL);
ptr?=?mxGetPr(rhs[out_id]);
for(i?=?0;?i?nr_class;?i++)
ptr[i]?=?model->nSV[i];
}
else
rhs[out_id]?=?mxCreateDoubleMatrix(0?0?mxREAL);
out_id++;
//?sv_coef
rhs[out_id]?=?mxCreateDoubleMatrix(model->l?model->nr_class-1?mxREAL);
ptr?=?mxGetPr(rhs[out_id]);
for(i?=?0;?i?nr_class-1;?i++)
for(j?=?0;?j?l;?j++)
ptr[(i*(model->l))+j]?=?model->sv_coef[i][j];
out_id++;
//?SVs
{
int?ir_index?nonzero_element;
mwIndex?*ir?*jc;
mxArray?*pprhs[1
- 上一篇:將220V的市電轉化為直流穩壓電源輸出
- 下一篇:基于MATLAB的神經網絡池化過程
評論
共有 條評論