📄 nnd13breg.m
字号:
'horizontalalignment','left')
text(150,100,'Testing Error',...
'color',get(perf_plot,'color'),...
'fontw','bold',...
'fontsize',10,...
'horizontalalignment','left')
text(150,40,'g',...
'color',get(gamk_plot,'color'),...
'fontw','bold',...
'fontsize',12,...
'FontName','Symbol',...
'horizontalalignment','left')
% CREATE BUTTONS
train_button = nnsfo('b3','Train');
set(train_button, ...
'callback',[me '(''train'')'])
set(nnsfo('b4','Contents'), ...
'callback','nndtoc')
nnsfo('b5','Close');
% DATA POINTER: MARKER
marker_ptr = nnsfo('data');
set(marker_ptr,'userdata',[]);
% DATA POINTER: CURRENT POINT
point_p_ptr = nnsfo('data');
set(point_p_ptr,'userdata',[p]);
point_t_ptr = nnsfo('data');
set(point_t_ptr,'userdata',[t]);
point_pp_ptr = nnsfo('data');
set(point_pp_ptr,'userdata',[pp]);
point_tt_ptr = nnsfo('data');
set(point_tt_ptr,'userdata',[tt]);
point_pv_ptr = nnsfo('data');
set(point_pv_ptr,'userdata',[pv]);
point_tv_ptr = nnsfo('data');
set(point_tv_ptr,'userdata',[tv]);
% DATA POINTER: PATH
path_ptr = nnsfo('data');
set(path_ptr,'userdata',[]);
% SAVE HANDLES, LOCK FIGURE
H = [fig_axis desc_text left right marker_ptr path_ptr ...
di_slider di_text func_plot func_test b1_plot b2_plot mer_plot perf_plot ...
func_target train_button S1_slider S1_text f_slider f_text dd_slider dd_text ...
point_p_ptr point_t_ptr point_pp_ptr point_tt_ptr point_pv_ptr point_tv_ptr gamk_plot ];
set(fig,'userdata',H)
% LOCK FIGURE AND RETURN
set(fig,'nextplot','new','pointer','arrow','color',nnltgray)
nnchkfs;
return
end
% SERVICE COMMANDS =======================================================
% UNLOCK FIGURE AND GET HANDLES
set(fig,'nextplot','add','pointer','watch')
H = get(fig,'userdata');
desc_text = H(2);
left = H(3);
right = H(4);
marker_ptr = H(5);
path_ptr = H(6);
di_slider = H(7);
di_text = H(8);
func_plot = H(9);
func_test = H(10);
b1_plot = H(11);
b2_plot = H(12);
mer_plot = H(13);
perf_plot = H(14);
func_target = H(15);
train_button = H(16);
S1_slider = H(17);
S1_text = H(18);
f_slider = H(19);
f_text = H(20);
dd_slider = H(21);
dd_text = H(22);
point_p_ptr = H(23);
point_t_ptr = H(24);
point_pp_ptr = H(25);
point_tt_ptr = H(26);
point_pv_ptr = H(27);
point_tv_ptr = H(28);
gamk_plot = H(29);
% COMMAND: DOWN
cmd = lower(cmd);
% COMMAND: DI
if strcmp(cmd,'di')
T = 2;
di = get(di_slider,'value');
set(di_text,'string',['' sprintf('%4.2f',round(di*100)*0.01) '' ])
f = get(f_slider,'value');
p = get(point_p_ptr,'userdata');
t = sin(2*pi*p*f/T) + randn(size(p))*0.2*di;
set(point_t_ptr,'userdata',[t]);
cmd = 'draw';
elseif strcmp(cmd,'s1')
S1 = round(get(S1_slider,'value'));
set(S1_text,'string',['' sprintf('%g',S1) '' ])
cmd = 'draw';
elseif strcmp(cmd,'dd')
T = 2;
dd = round(get(dd_slider,'value'));
set(dd_text,'string',['' sprintf('%g',dd) '' ])
f = get(f_slider,'value');
di = get(di_slider,'value');
dx = (xlim(2)-xlim(1))/(dd-1);
dx2 = (xlim(2)-xlim(1))/round((dd/3)-1);
pp = [xlim(1):(dx/10):xlim(2)];
tt = sin(2*pi*pp*f/T);
p = [xlim(1):dx:xlim(2)];
t = sin(2*pi*p*f/T) + randn(size(p))*0.2*di;
% The UNION command is to secure last point
pv = union([(xlim(1)+0.05):dx2:(xlim(2)-0.05)],(xlim(2)-0.05));
tv = sin(2*pi*pv*f/T); % + randn(size(VV.P))*0.2;
set(point_p_ptr,'userdata',[p]);
set(point_t_ptr,'userdata',[t]);
set(point_pp_ptr,'userdata',[pp]);
set(point_tt_ptr,'userdata',[tt]);
set(point_pv_ptr,'userdata',[pv]);
set(point_tv_ptr,'userdata',[tv]);
cmd = 'draw';
elseif strcmp(cmd,'f')
T = 2;
f = get(f_slider,'value');
set(f_text,'string',['' sprintf('%4.2f',round(f*100)*0.01) '' ])
dd = round(get(dd_slider,'value'));
di = get(di_slider,'value');
dx = (xlim(2)-xlim(1))/(dd-1);
dx2 = (xlim(2)-xlim(1))/round((dd/3)-1);
pp = [xlim(1):(dx/10):xlim(2)];
tt = sin(2*pi*pp*f/T);
p = [xlim(1):dx:xlim(2)];
t = sin(2*pi*p*f/T) + randn(size(p))*0.2*di;
% The UNION command is to secure last point
pv = union([(xlim(1)+0.05):dx2:(xlim(2)-0.05)],(xlim(2)-0.05));
tv = sin(2*pi*pv*f/T); % + randn(size(VV.P))*0.2;
set(point_p_ptr,'userdata',[p]);
set(point_t_ptr,'userdata',[t]);
set(point_pp_ptr,'userdata',[pp]);
set(point_tt_ptr,'userdata',[tt]);
set(point_pv_ptr,'userdata',[pv]);
set(point_tv_ptr,'userdata',[tv]);
cmd = 'draw';
end
% COMMAND: DRAW
if strcmp(cmd,'draw')
T = 2;
% GET DATA
di = get(di_slider,'value');
dd = round(get(dd_slider,'value'));
f = get(f_slider,'value');
dx = (xlim(2)-xlim(1))/(dd-1);
p = get(point_p_ptr,'userdata');
t = get(point_t_ptr,'userdata');
pp = get(point_pp_ptr,'userdata');
tt = get(point_tt_ptr,'userdata');
pv = get(point_pv_ptr,'userdata');
tv = get(point_tv_ptr,'userdata');
%if length(point) == 0
% set(fig,'nextplot','new','pointer','arrow')
% return
%end
%pp = [xlim(1):(dx/10):xlim(2)];
%tt = sin(2*pi*pp*f/T);
%p = [xlim(1):dx:xlim(2)];
%t = sin(2*pi*p*f/T) + randn(size(p))*0.2*(di);
% The UNION command is to secure last point
%pv = union([(xlim(1)+0.05):dx2:(xlim(2)-0.05)],(xlim(2)-0.05));
%pv = [-.95 -.65 -.25 .25 .65 .95];
%tv = sin(2*pi*pv*f/T); % + randn(size(VV.P))*0.2;
%temp = get(point_ptr,'userdata');
%p=temp(1:21);
%t=temp((21+1):21*2);
%pp=temp((21*2+1):(21*2+201));
%tt=temp((21*2+201+1):(21*2+201*2));
%pv=temp((21*2+201*2+1):(21*2+201*2+6));
%tv=temp((21*2+201*2+7):(21*2+201*2+12));
%t = sin(2*pi*p*f/T) + randn(size(p))*0.2*(di);
%tt = sin(2*pi*pp*f/T);
%tv = sin(2*pi*pv*f/T); % + randn(size(VV.P))*0.2;
%set(point_ptr,'userdata',[p t pp tt pv tv]);
set(func_target,'ydata',t);
set(func_test,'ydata',tt);
set(func_plot,'ydata',tt);
set(func_target,'xdata',p);
set(func_test,'xdata',pp);
set(func_plot,'xdata',pp);
set(mer_plot,'xdata',[1 101],'ydata',[1 1]);
set(perf_plot,'xdata',[1 101],'ydata',[1 1]);
set(gamk_plot,'xdata',[1 101],'ydata',[1 1]);
set(b1_plot,'xdata',p,'visible','off');
set(b2_plot,'xdata',p,'visible','off');
set(b1_plot,'ydata',t,'visible','off');
set(b2_plot,'ydata',t,'visible','off');
drawnow
end
% COMMAND: TRAIN
if strcmp(cmd,'train')
set(train_button,'enable','off');
set(di_slider,'enable','off');
set(S1_slider,'enable','off');
set(f_slider,'enable','off');
set(dd_slider,'enable','off');
S1 = round(get(S1_slider,'value'));
dd = round(get(dd_slider,'value'));
f = get(f_slider,'value');
T = 2;
dx = (xlim(2)-xlim(1))/(dd-1);
%temp = get(point_ptr,'userdata');
%p=temp(1:(dd-1));
%t=temp(((dd-1)+1):(dd-1)*2);
%pp=temp(((dd-1)*2+1):(((dd-1)*2+1)+((dd-1)*10)));
%tt=temp((((dd-1)*2+1)+((dd-1)*10)+1):(((dd-1)*2+1)+((dd-1)*10)*2));
%pv=temp(((dd-1)*2+201*2+1):((dd-1)*2+201*2+6));
%tv=temp(((dd-1)*2+201*2+7):((dd-1)*2+201*2+12));
p = get(point_p_ptr,'userdata');
t = get(point_t_ptr,'userdata');
pp = get(point_pp_ptr,'userdata');
tt = get(point_tt_ptr,'userdata');
pv = get(point_pv_ptr,'userdata');
tv = get(point_tv_ptr,'userdata');
TT.P = pp; %[-1:(dx/10):1];
TT.T = tt; %sin(2*pi*TT.P*f/T); % + randn(size(VV.P))*0.2;
trainParam = nnd13train_br('pdefaults');
trainParam.mingrad = 1e-8;
trainParam.ro = 0;
trainParam.show = 25;
trainParam.max_epoch = 101;
trainParam.S1 = S1;
trainParam.mu_initial = 10;
trainParam.v = 2;
trainParam.seed = 70312;
[net,tr] = nnd13train_br(trainParam,p,t,[],TT,func_test,perf_plot,mer_plot, ...
0.1,b1_plot,b2_plot,gamk_plot);
set(train_button,'enable','on');
set(di_slider,'enable','on');
set(S1_slider,'enable','on');
set(f_slider,'enable','on');
set(dd_slider,'enable','on');
end
% LOCK FIGURE
set(fig,'nextplot','new','pointer','arrow')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -