资源简介
基于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 < n; 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 < model->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 < model->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 < n; 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 < n; 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 < model->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 < model->nr_class-1; i++)
for(j = 0; j < model->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的神经网络池化过程
相关资源
- 基于MATLAB的神经网络池化过程
- 寻找三角形费马点Matlab程序
- 熵权法求权重MATLAB源码
- matlab求解非线性方程组
- 遗传算法完整MATLAB程序覆盖法
- 灰色预测Mmatlab程序
- matlab元胞自动机交通网模拟
- MATLAB实现ARQ
- MATLAB中ARQ程序代码
- 弹道图绘制-matlab代码
- LCL的三相三线制APF仿真程序
- 串级控制仿真
- matlab程序171630
- matlab 无代码 步进电机控制
- matlab 无代码 无刷电机控制
- matlab心电信号处理
- ID3算法 matlab代码实现
- 利用matlab将风场nc文件读取成txt文件
- KLTransform
- 最优化三点二次插值Matlab
- 普通端射阵天线的MATLAB 程序
-
微燃机Matlab/simuli
nk建模 - LSB嵌入水印与提取基于MATLAB的实现
- matlab双极性二进制基带传输系统的仿
- MATLAB 模糊PID仿真文件
- matlab水果识别程序171419
- Matlab基本实验微分方程画图
- 矩形贴片天线Matlab仿真
- matlab计算复合材料板ABD程序
- 雷达MATLAB仿真171350
评论
共有 条评论