📄 plotperf.c
字号:
/*
* 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 + -