annotate _FullBNT/KPMtools/normaliseC.c @ 9:4ea6619cb3f5 tip

removed log files
author matthiasm
date Fri, 11 Apr 2014 15:55:11 +0100
parents b5b38998ef3b
children
rev   line source
matthiasm@8 1 /* C mex version of normalise.m in misc directory */
matthiasm@8 2
matthiasm@8 3 #include "mex.h"
matthiasm@8 4
matthiasm@8 5 void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
matthiasm@8 6 {
matthiasm@8 7 double *T, *sum_ptr, sum;
matthiasm@8 8 int i, N;
matthiasm@8 9
matthiasm@8 10 plhs[0] = mxDuplicateArray(prhs[0]);
matthiasm@8 11 T = mxGetPr(plhs[0]);
matthiasm@8 12 if(mxIsSparse(plhs[0])) N = mxGetJc(plhs[0])[mxGetN(plhs[0])];
matthiasm@8 13 else N = mxGetNumberOfElements(plhs[0]);
matthiasm@8 14
matthiasm@8 15 plhs[1] = mxCreateDoubleMatrix(1, 1, mxREAL);
matthiasm@8 16 sum_ptr = mxGetPr(plhs[1]);
matthiasm@8 17
matthiasm@8 18 sum = 0;
matthiasm@8 19 for (i = 0; i < N; i++) {
matthiasm@8 20 sum += *T++;
matthiasm@8 21 }
matthiasm@8 22 T = mxGetPr(plhs[0]);
matthiasm@8 23 if (sum > 0) {
matthiasm@8 24 for (i = 0; i < N; i++) {
matthiasm@8 25 *T++ /= sum;
matthiasm@8 26 }
matthiasm@8 27 }
matthiasm@8 28 *sum_ptr = sum;
matthiasm@8 29 }