⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fsals_svmtest.c

📁 崭新矢量机SVM源码
💻 C
字号:
#include "mex.h"
#include "math.h"

double gradmin,*oldalpha,*gradvec,*svii;
int samplesnum,testsamplesnum,dim;

// Kernel evaluation
double kernel(double kernelparam,int p,int q, double *psamples1,double *psamples2)
{
	double temp=0,aaa;
	int i,count1,count2;
	count1 = p*dim;
	count2 = q*dim;
	for (i=0;i<dim;i++)
	{
		aaa = *(psamples1 + i + count1) - *(psamples2 + i + count2);
		temp += aaa*aaa;
	}
	return exp(-temp*kernelparam);
}

// Interface 
void mexFunction (int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
	double *ptestsamples,*psamples,*plabels,*alpha,*result;
	double kernelparam,bias;
	int i,j;
	char ktype[10];

	ptestsamples= mxGetPr(prhs[0]);
	psamples	= mxGetPr(prhs[1]);
	plabels		= mxGetPr(prhs[2]);
	mxGetString( prhs[3], ktype, 10 );
	kernelparam	= mxGetScalar(prhs[4]);
	alpha		= mxGetPr(prhs[5]);
	bias		= mxGetScalar(prhs[6]);

	testsamplesnum	= mxGetN(prhs[0]);
	dim			= mxGetM(prhs[0]);
	samplesnum  = mxGetN(prhs[1]);
	
	plhs[0]		= mxCreateDoubleMatrix(testsamplesnum,1,mxREAL);
	result		= mxGetPr(plhs[0]);
	
	for (i=0;i<testsamplesnum;i++)
	{
		result[i] = bias;
	}

	for(i=0;i<testsamplesnum;i++)
	{
		for (j=0;j<samplesnum;j++)
		{
			result[i] = result[i] + alpha[j]*kernel(kernelparam,j,i,psamples,ptestsamples);
		}
	}
	return;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -