void features_bvav2_api(const mxArray *prhs[2], const mxArray *plhs[1])
{
  real_T (*ft)[13];
  emxArray_real_T *audio;
  real_T srate;
  emlrtStack st = { NULL, NULL, NULL };

  st.tls = emlrtRootTLSGlobal;
  ft = (real_T (*)[13])mxMalloc(sizeof(real_T [13]));
  emlrtHeapReferenceStackEnterFcnR2012b(&st);
  emxInit_real_T(&st, &audio, 1, true);
  prhs[0] = emlrtProtectR2012b(prhs[0], 0, false, -1);

  /* Marshall function inputs */
  emlrt_marshallIn(&st, emlrtAlias(prhs[0]), "audio", audio);
  srate = g_emlrt_marshallIn(&st, emlrtAliasP(prhs[1]), "srate");

  /* Invoke the target function */
  features_bvav2(audio, srate, *ft);

  /* Marshall function outputs */
  plhs[0] = g_emlrt_marshallOut(*ft);
  audio->canFreeData = false;
  emxFree_real_T(&audio);
  emlrtHeapReferenceStackLeaveFcnR2012b(&st);
}
void TestBemHeatEq_optimized_api(const mxArray * const prhs[4], const mxArray
  *plhs[2])
{
  emxArray_real_T *sigIn;
  emxArray_real_T *u;
  emxArray_real_T *r;
  real_T regOrder;
  real_T lambda;
  boolean_T plotFlag;
  emlrtStack st = { NULL, NULL, NULL };

  st.tls = emlrtRootTLSGlobal;
  emlrtHeapReferenceStackEnterFcnR2012b(&st);
  emxInit_real_T(&st, &sigIn, 2, &ub_emlrtRTEI, true);
  emxInit_real_T(&st, &u, 2, &ub_emlrtRTEI, true);
  b_emxInit_real_T(&st, &r, 1, &ub_emlrtRTEI, true);

  /* Marshall function inputs */
  e_emlrt_marshallIn(&st, emlrtAlias(prhs[0]), "sigIn", sigIn);
  regOrder = c_emlrt_marshallIn(&st, emlrtAliasP(prhs[1]), "regOrder");
  lambda = c_emlrt_marshallIn(&st, emlrtAliasP(prhs[2]), "lambda");
  plotFlag = k_emlrt_marshallIn(&st, emlrtAliasP(prhs[3]), "plotFlag");

  /* Invoke the target function */
  TestBemHeatEq_optimized(&st, sigIn, regOrder, lambda, plotFlag, u, r);

  /* Marshall function outputs */
  plhs[0] = f_emlrt_marshallOut(u);
  plhs[1] = g_emlrt_marshallOut(r);
  r->canFreeData = false;
  emxFree_real_T(&r);
  u->canFreeData = false;
  emxFree_real_T(&u);
  sigIn->canFreeData = false;
  emxFree_real_T(&sigIn);
  emlrtHeapReferenceStackLeaveFcnR2012b(&st);
}