6 int nrhs,
const mxArray *prhs[] )
8 double *x, *y, *res, gamma, hlp;
10 int cur, i, j,
k,
l, m, n, n2;
41 if (nrhs != 3) sel = 1;
42 n2 = mxGetM(prhs[sel]);
43 k = mxGetN(prhs[sel]);
44 y = mxGetPr(prhs[sel]);
47 mexErrMsgTxt(
"GaussKernel.evaluate (mex): Array dimensions must match");
50 plhs[0] = mxCreateDoubleMatrix(m, k, mxREAL);
51 res = mxGetPr(plhs[0]);
56 gamma = mxGetScalar(mxGetProperty(prhs[0], 0,
"Gamma"));
59 #pragma omp parallel for private(i, j, l, cur, hlp) shared(res, gamma, x, y, m, k)
60 for (i = 0; i < m; i++) {
61 for (j = 0; j <
k; j++) {
65 for (l = 0; l < n; l++) {
66 hlp = x[i*n+
l] - y[j*n+
l];
69 res[cur] = exp(-gamma*res[cur]);
73 #pragma omp parallel for private(i, j, l, cur, hlp) shared(res, gamma, x, y, m, k)
74 for (j = 0; j <
k; j++) {
75 for (i = 0; i < m; i++) {
79 for (l = 0; l < n; l++) {
80 hlp = x[i*n+
l] - y[j*n+
l];
83 res[cur] = exp(-gamma*res[cur]);
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])