⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plotperf.c

📁 nnToolKit 神经网络工具包是基于 MATLAB 神经网络工具箱自行开发的一组神经网络算法函数库
💻 C
📖 第 1 页 / 共 4 页
字号:
            /*
             * return
             */
            goto return_;
        } else {
            mxDestroyArray(a_);
        }
    /*
     * end
     */
    }
    /*
     * 
     * % GET FIGURE AND USER DATA
     * % ========================
     * 
     * % Get existing/new figure
     * fig2 = find_existing_figure;
     */
    mlfAssign(&fig2, mlfPlotperf_find_existing_figure());
    /*
     * if (fig2 == 0), fig2 = new_figure(name); end
     */
    if (mclEqBool(mclVv(fig2, "fig2"), _mxarray10_)) {
        mlfAssign(&fig2, mlfPlotperf_new_figure(mclVa(name, "name")));
    }
    /*
     * 
     * % Get existing/new userdata
     * ud=get(fig2,'userdata');
     */
    mlfAssign(&ud, mlfNGet(1, mclVv(fig2, "fig2"), _mxarray11_, NULL));
    /*
     * if isempty(ud)
     */
    if (mlfTobool(mlfIsempty(mclVv(ud, "ud")))) {
        /*
         * createNewPlot(fig2);
         */
        mlfPlotperf_createNewPlot(mclVv(fig2, "fig2"));
        /*
         * ud = get(fig2,'userdata');
         */
        mlfAssign(&ud, mlfNGet(1, mclVv(fig2, "fig2"), _mxarray11_, NULL));
    /*
     * end
     */
    }
    /*
     * 
     * % UPDATE PLOTTING DATA
     * % ====================
     * 
     * % Epoch indices and initial y-limits
     * ind = 1:(epoch+1);
     */
    mlfAssign(
      &ind,
      mlfColon(_mxarray6_, mclPlus(mclVa(epoch, "epoch"), _mxarray6_), NULL));
    /*
     * ymax=1e-20;
     */
    mlfAssign(&ymax, _mxarray13_);
    /*
     * ymin=1e20;
     */
    mlfAssign(&ymin, _mxarray14_);
    /*
     * 
     * % Update validation-performance plot and y-limits (if required)
     * if isfield(tr,'vperf')
     */
    if (mlfTobool(mlfIsfield(mclVa(tr, "tr"), _mxarray15_))) {
        /*
         * plotValidation = ~isnan(tr.vperf(1));
         */
        mlfAssign(
          &plotValidation,
          mclNot(
            mclFeval(
              mclValueVarargout(),
              mlxIsnan,
              mlfIndexRef(mclVa(tr, "tr"), ".vperf(?)", _mxarray6_),
              NULL)));
    /*
     * else
     */
    } else {
        /*
         * plotValidation = 0;
         */
        mlfAssign(&plotValidation, _mxarray10_);
    /*
     * end
     */
    }
    /*
     * if plotValidation
     */
    if (mlfTobool(mclVv(plotValidation, "plotValidation"))) {
        /*
         * set(ud.TrainLine(3),...
         */
        mclAssignAns(
          &ans,
          mlfNSet(
            0,
            mlfIndexRef(mclVv(ud, "ud"), ".TrainLine(?)", _mxarray17_),
            _mxarray18_,
            mlfIndexRef(mclVa(tr, "tr"), ".epoch(?)", mclVv(ind, "ind")),
            _mxarray20_,
            mlfIndexRef(mclVa(tr, "tr"), ".vperf(?)", mclVv(ind, "ind")),
            _mxarray22_,
            _mxarray24_,
            _mxarray25_,
            _mxarray27_,
            NULL));
        /*
         * 'Xdata',tr.epoch(ind),...
         * 'Ydata',tr.vperf(ind),...
         * 'linewidth',2,'color','g');
         * ymax=(max([ymax tr.vperf(ind)]));   
         */
        mlfAssign(
          &ymax,
          mlfMax(
            NULL,
            mlfHorzcat(
              mclVv(ymax, "ymax"),
              mlfIndexRef(mclVa(tr, "tr"), ".vperf(?)", mclVv(ind, "ind")),
              NULL),
            NULL,
            NULL));
        /*
         * ymin=(min([ymin tr.vperf(ind)]));   
         */
        mlfAssign(
          &ymin,
          mlfMin(
            NULL,
            mlfHorzcat(
              mclVv(ymin, "ymin"),
              mlfIndexRef(mclVa(tr, "tr"), ".vperf(?)", mclVv(ind, "ind")),
              NULL),
            NULL,
            NULL));
    /*
     * end
     */
    }
    /*
     * 
     * % Update test-performance plot and y-limits (if required)
     * if isfield(tr,'tperf')
     */
    if (mlfTobool(mlfIsfield(mclVa(tr, "tr"), _mxarray29_))) {
        /*
         * plotTest = ~isnan(tr.tperf(1));
         */
        mlfAssign(
          &plotTest,
          mclNot(
            mclFeval(
              mclValueVarargout(),
              mlxIsnan,
              mlfIndexRef(mclVa(tr, "tr"), ".tperf(?)", _mxarray6_),
              NULL)));
    /*
     * else
     */
    } else {
        /*
         * plotTest = 0;
         */
        mlfAssign(&plotTest, _mxarray10_);
    /*
     * end
     */
    }
    /*
     * if plotTest
     */
    if (mlfTobool(mclVv(plotTest, "plotTest"))) {
        /*
         * set(ud.TrainLine(2),...
         */
        mclAssignAns(
          &ans,
          mlfNSet(
            0,
            mlfIndexRef(mclVv(ud, "ud"), ".TrainLine(?)", _mxarray24_),
            _mxarray18_,
            mlfIndexRef(mclVa(tr, "tr"), ".epoch(?)", mclVv(ind, "ind")),
            _mxarray20_,
            mlfIndexRef(mclVa(tr, "tr"), ".tperf(?)", mclVv(ind, "ind")),
            _mxarray22_,
            _mxarray24_,
            _mxarray25_,
            _mxarray31_,
            NULL));
        /*
         * 'Xdata',tr.epoch(ind),...
         * 'Ydata',tr.tperf(ind),...
         * 'linewidth',2,'color','r');
         * ymax=(max([ymax tr.tperf(ind)]));   
         */
        mlfAssign(
          &ymax,
          mlfMax(
            NULL,
            mlfHorzcat(
              mclVv(ymax, "ymax"),
              mlfIndexRef(mclVa(tr, "tr"), ".tperf(?)", mclVv(ind, "ind")),
              NULL),
            NULL,
            NULL));
        /*
         * ymin=(min([ymin tr.tperf(ind)]));   
         */
        mlfAssign(
          &ymin,
          mlfMin(
            NULL,
            mlfHorzcat(
              mclVv(ymin, "ymin"),
              mlfIndexRef(mclVa(tr, "tr"), ".tperf(?)", mclVv(ind, "ind")),
              NULL),
            NULL,
            NULL));
    /*
     * end
     */
    }
    /*
     * 
     * % Update performance plot and ylimits
     * set(ud.TrainLine(4),...
     */
    mclAssignAns(
      &ans,
      mlfNSet(
        0,
        mlfIndexRef(mclVv(ud, "ud"), ".TrainLine(?)", _mxarray33_),
        _mxarray18_,
        mlfIndexRef(mclVa(tr, "tr"), ".epoch(?)", mclVv(ind, "ind")),
        _mxarray20_,
        mlfIndexRef(mclVa(tr, "tr"), ".perf(?)", mclVv(ind, "ind")),
        _mxarray22_,
        _mxarray24_,
        _mxarray25_,
        _mxarray34_,
        NULL));
    /*
     * 'Xdata',tr.epoch(ind),...
     * 'Ydata',tr.perf(ind),...
     * 'linewidth',2,'color','b');
     * ymax=(max([ymax tr.perf(ind)]));   
     */
    mlfAssign(
      &ymax,
      mlfMax(
        NULL,
        mlfHorzcat(
          mclVv(ymax, "ymax"),
          mlfIndexRef(mclVa(tr, "tr"), ".perf(?)", mclVv(ind, "ind")),
          NULL),
        NULL,
        NULL));
    /*
     * ymin=(min([ymin tr.perf(ind)]));
     */
    mlfAssign(
      &ymin,
      mlfMin(
        NULL,
        mlfHorzcat(
          mclVv(ymin, "ymin"),
          mlfIndexRef(mclVa(tr, "tr"), ".perf(?)", mclVv(ind, "ind")),
          NULL),
        NULL,
        NULL));
    /*
     * 
     * % Update performance goal plot and y-limits (if required)
     * % plot goal only if > 0, or if 0 and ymin is also 0
     * plotGoal = isfinite(goal) & ((goal > 0) | (ymin == 0));
     */
    mlfAssign(
      &plotGoal,
      mclAnd(
        mlfIsfinite(mclVa(goal, "goal")),
        mclOr(
          mclGt(mclVa(goal, "goal"), _mxarray10_),
          mclEq(mclVv(ymin, "ymin"), _mxarray10_))));
    /*
     * if plotGoal
     */
    if (mlfTobool(mclVv(plotGoal, "plotGoal"))) {
        /*
         * set(ud.TrainLine(1),...
         */
        mclAssignAns(
          &ans,
          mlfNSet(
            0,
            mlfIndexRef(mclVv(ud, "ud"), ".TrainLine(?)", _mxarray6_),
            _mxarray18_,
            mlfIndexRef(mclVa(tr, "tr"), ".epoch(?)", mclVv(ind, "ind")),
            _mxarray20_,
            mclPlus(
              mclVa(goal, "goal"),
              mlfZeros(
                _mxarray6_, mclPlus(mclVa(epoch, "epoch"), _mxarray6_), NULL)),
            _mxarray22_,
            _mxarray24_,
            _mxarray25_,
            _mxarray36_,
            NULL));
        /*
         * 'Xdata',tr.epoch(ind),...
         * 'Ydata',goal+zeros(1,epoch+1),...
         * 'linewidth',2,'color','k');
         * ymax=(max([ymax goal]));   
         */
        mlfAssign(
          &ymax,
          mlfMax(
            NULL,
            mlfHorzcat(mclVv(ymax, "ymax"), mclVa(goal, "goal"), NULL),
            NULL,
            NULL));
        /*
         * ymin=(min([ymin goal]));
         */
        mlfAssign(
          &ymin,
          mlfMin(
            NULL,
            mlfHorzcat(mclVv(ymin, "ymin"), mclVa(goal, "goal"), NULL),
            NULL,
            NULL));
    /*
     * end
     */
    }
    /*
     * 
     * % Update axis scale and rounded y-limits
     * if (ymin > 0)
     */
    if (mclGtBool(mclVv(ymin, "ymin"), _mxarray10_)) {
        /*
         * yscale = 'log';
         */
        mlfAssign(&yscale, _mxarray38_);
        /*
         * ymax=10^ceil(log10(ymax));
         */
        mlfAssign(
          &ymax,
          mclMpower(_mxarray40_, mlfCeil(mlfLog10(mclVv(ymax, "ymax")))));
        /*
         * ymin=10^fix(log10(ymin)-1);
         */
        mlfAssign(
          &ymin,
          mclMpower(
            _mxarray40_,
            mlfFix(mclMinus(mlfLog10(mclVv(ymin, "ymin")), _mxarray6_))));
    /*
     * else
     */
    } else {
        /*
         * yscale = 'linear';
         */
        mlfAssign(&yscale, _mxarray41_);
        /*
         * ymax=10^ceil(log10(ymax));
         */
        mlfAssign(
          &ymax,
          mclMpower(_mxarray40_, mlfCeil(mlfLog10(mclVv(ymax, "ymax")))));
        /*
         * ymin=0;
         */
        mlfAssign(&ymin, _mxarray10_);
    /*
     * end
     */
    }
    /*
     * set(ud.TrainAxes,'xlim',[0 epoch],'ylim',[ymin ymax]);
     */
    mclAssignAns(
      &ans,
      mlfNSet(
        0,
        mlfIndexRef(mclVv(ud, "ud"), ".TrainAxes"),
        _mxarray43_,
        mlfHorzcat(_mxarray10_, mclVa(epoch, "epoch"), NULL),
        _mxarray45_,
        mlfHorzcat(mclVv(ymin, "ymin"), mclVv(ymax, "ymax"), NULL),
        NULL));
    /*
     * set(ud.TrainAxes,'yscale',yscale);
     */
    mclAssignAns(
      &ans,
      mlfNSet(
        0,
        mlfIndexRef(mclVv(ud, "ud"), ".TrainAxes"),
        _mxarray47_,
        mclVv(yscale, "yscale"),
        NULL));
    /*
     * 
     * % UPDATE FIGURE TITLE, NAME, AND AXIS LABLES
     * % ====================
     * 
     * % Update figure title
     * tstring = sprintf('Performance is %g',tr.perf(epoch+1));
     */
    mlfAssign(
      &tstring,
      mlfSprintf(
        NULL,
        _mxarray49_,
        mlfIndexRef(
          mclVa(tr, "tr"),
          ".perf(?)",
          mclPlus(mclVa(epoch, "epoch"), _mxarray6_)),
        NULL));
    /*
     * if isfinite(goal)
     */
    if (mlfTobool(mlfIsfinite(mclVa(goal, "goal")))) {
        /*
         * tstring = [tstring ', ' sprintf('Goal is %g',goal)];
         */
        mlfAssign(
          &tstring,
          mlfHorzcat(
            mclVv(tstring, "tstring"),
            _mxarray51_,
            mlfSprintf(NULL, _mxarray53_, mclVa(goal, "goal"), NULL),
            NULL));
    /*
     * end
     */
    }
    /*
     * set(ud.TrainTitle,'string',tstring);
     */
    mclAssignAns(
      &ans,
      mlfNSet(
        0,
        mlfIndexRef(mclVv(ud, "ud"), ".TrainTitle"),
        _mxarray55_,
        mclVv(tstring, "tstring"),
        NULL));
    /*
     * 
     * % Update figure name
     * if length(name)
     */
    if (mclLengthInt(mclVa(name, "name")) != 0) {
        /*
         * set(fig2,'name',['Training with ' name],'numbertitle','off');
         */
        mclAssignAns(
          &ans,
          mlfNSet(
            0,
            mclVv(fig2, "fig2"),
            _mxarray57_,
            mlfHorzcat(_mxarray59_, mclVa(name, "name"), NULL),
            _mxarray61_,

⌨️ 快捷键说明

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