Esempio n. 1
0
/*
 * 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;
}
Esempio n. 2
0
/*
 * 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;
}