marg_table_ndxsd.c

来自「麻省理工学院的人工智能工具箱,很珍贵,希望对大家有用!」· C语言 代码 · 共 46 行

C
46
字号
/* C mex version for marg_table_ndx.m in potential/Tables directory  */

#include "mex.h"

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]){
  mxArray *ptemp;
  double  *Tbig, *Tsmall, maximize, max, sum;
  int     i, j, k, S, D;
  int     *small_ndx, *diff_ndx;

  Tbig = mxGetPr(prhs[0]);
  maximize = (int)mxGetScalar(prhs[1]);

  ptemp = mxGetField(prhs[2], 0, "small");
  small_ndx = mxGetData(ptemp);
  S = mxGetNumberOfElements(ptemp);

  ptemp = mxGetField(prhs[2], 0, "diff");
  diff_ndx = mxGetData(ptemp);
  D = mxGetNumberOfElements(ptemp);

  plhs[0] = mxCreateDoubleMatrix(S, 1, mxREAL);
  Tsmall = mxGetPr(plhs[0]);

  if (maximize) {
    for (i = 0; i < S; i++) {
      max = -1e-20;
      for (j = 0; j < D; j++) {
		k = small_ndx[i] + diff_ndx[j];
    	if (Tbig[k] > max) max = Tbig[k];
      }
      Tsmall[i] = max;
    }
  } 
  else {
    for (i = 0; i < S; i++) {
      sum = 0;
      for (j = 0; j < D; j++) {
		k = small_ndx[i] + diff_ndx[j];
		sum += Tbig[k];
      }
      Tsmall[i] = sum;
    }
  }
}

⌨️ 快捷键说明

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