/* * function y=mymagic(x) */ static mxArray * Mmymagic(int nargout_, mxArray * x) { mexLocalFunctionTable save_local_function_table_ = mclSetCurrentLocalFunctionTable(&_local_function_table_mymagic); mxArray * y = NULL; mclCopyArray(&x); /* * y=magic(x); */ mlfAssign(&y, mlfMagic(mclVa(x, "x"))); mclValidateOutput(y, 1, nargout_, "y", "mymagic"); mxDestroyArray(x); mclSetCurrentLocalFunctionTable(save_local_function_table_); return y; }
/* * function r=mrank(n) */ static mxArray * Mmrank(int nargout_, mxArray * n) { mexLocalFunctionTable save_local_function_table_ = mclSetCurrentLocalFunctionTable(&_local_function_table_mrank); mxArray * r = NULL; mxArray * ans = NULL; mxArray * k = NULL; mclCopyArray(&n); /* * r=zeros(n,1); */ mlfAssign(&r, mlfZeros(mclVa(n, "n"), _mxarray0_, NULL)); /* * for k=1:n */ { int v_ = mclForIntStart(1); int e_ = mclForIntEnd(mclVa(n, "n")); if (v_ > e_) { mlfAssign(&k, _mxarray1_); } else { /* * r(k)=my_rank(magic(k)); * end */ for (; ; ) { mclIntArrayAssign1( &r, mlfMy_rank(mlfMagic(mlfScalar(v_)), NULL), v_); if (v_ == e_) { break; } ++v_; } mlfAssign(&k, mlfScalar(v_)); } } /* * r */ mclPrintArray(mclVv(r, "r"), "r"); mclValidateOutput(r, 1, nargout_, "r", "mrank"); mxDestroyArray(k); mxDestroyArray(ans); mxDestroyArray(n); mclSetCurrentLocalFunctionTable(save_local_function_table_); return r; }