📄 nefgui_e.m
字号:
function nefgui_e(action, p1);
%NEFGUI_E GUI-Tool to manage fuzzy error settings.
%
% See also NEFGUI_O, NEFGUI, NEFGUI_I and NEFCON.
% Author: Andreas Nuernberger, TU Braunschweig, August 1996; a.nuernberger@tu-bs.de
% contact: Ludger Merz, DASA-Airbus GmbH, Hamburg; ludger.merz@airbus.de
% Globals: (shared by: nefcon nefgui_e ...)
% NEFCON_STAT - Status of execution
% NEFCON_UIH - Handle to nefgui GUI-Tool
% NEFCON_RULE - Selected rule generation
% NEFCON_OPT - Selected optimization method
% NEFCON_FERR - Selected error calculation
% NEFCON_RATE - Selected learning rate
% NEFCON_IFM - intial fismatrix (rule learning disabled)
% NEFCON_EFM - error fismatrix
% NEFCON_EFMN - error fismatrix name
% NEFCON_FIS - nefcon fismatrix
global NEFCON_PROT NEFCON_STAT NEFCON_UIH NEFCON_RULE NEFCON_OPT NEFCON_IFM NEFCON_EFM NEFCON_EFMN
global NEFCON_RATE NEFCON_FERR NEFCON_FIS
handle = findobj('Tag', 'NEFCONGUI_E');
if nargin < 1
if handle == []
action = 'initialize';
else
action = '';
end;
end;
%create controls
if strcmp(action, 'initialize') & handle == [],
% Information for all objects
bckfrmColor=230/255*[1 1 1];
frmColor=192/255*[1 1 1];
bckColor=230/255*[1 1 1];
btnColor=192/255*[1 1 1];
popupColor=192/255*[1 1 1];
editColor=255/255*[1 1 1];
border=6;
spacing=8;
%Calculate Windowsize
figPos=get(0,'DefaultFigurePosition');
figPos(3) = 0.7 * figPos(3);
figPos(4) = 0.4 * figPos(3);
maxRight=figPos(3);
maxTop=figPos(4);
% uicontrol sizes
% btnWid = 110;
% btnHt = 23;
btnWid = maxRight/4;
btnHt = maxRight/18;
% calculate normalized units for resizeable window
Nborder = border/maxRight;
Nspacing= spacing/maxRight;
NbtnWid = btnWid/maxRight;
NbtnHt = btnHt/maxTop;
% userdata
localdata = [];
% open new window
h = figure( ...
'Name','Error Definition', ...
'NumberTitle','off', ...
'Color',bckColor, ...
'Visible','on', ...
'UserData',localdata, ...
'Units','pixels', ...
'DefaultAxesXColor','black', ...
'DefaultAxesYColor','black', ...
'MenuBar','none', ...
'Resize','on', ...
'Nextplot','new', ...
'Position',figPos, ...
'Tag','NEFCONGUI_E' ...
);
figPos=get(h,'position');
% create close button
closeb = uicontrol(h, ...
'Style', 'push', ...
'String', 'Close', ...
'Units','normalized', ...
'Position', [1-Nspacing-NbtnWid Nspacing NbtnWid NbtnHt], ...
'CallBack', 'nefgui_e(''close'')');
% create help button
closeb = uicontrol(h, ...
'Style', 'push', ...
'String', 'Help', ...
'Units','normalized', ...
'Position', [1-2*(Nspacing+NbtnWid) Nspacing NbtnWid NbtnHt], ...
'CallBack', 'hthelp(''nefcon.htm#errordef'')');
% create edit err button
editErrb = uicontrol(h, ...
'Style', 'push', ...
'String', 'Edit Err', ...
'Units','normalized', ...
'Position', [Nspacing Nspacing NbtnWid NbtnHt], ...
'CallBack', 'nefgui_e(''edit'')');
% 'Position', [1-3*(Nspacing+NbtnWid) Nspacing NbtnWid NbtnHt], ...
% The Options frame
left = Nspacing;
% bottom = 3*Nspacing+1*NbtnHt;
bottom = 2*Nspacing + NbtnHt;
width = 1-Nspacing;
height = 1-bottom-Nspacing;
right = left+width;
top = bottom+height;
statHndl=uicontrol(h, ...
'Style','text', ...
'BackgroundColor',bckfrmColor, ...
'HorizontalAlignment','left', ...
'Position', [left+Nspacing top-Nspacing-NbtnHt width-2*Nspacing NbtnHt], ...
'Units', 'normalized', ...
'String', 'Fuzzy Error will be calculated using...');
topFrmHndl=uicontrol(h, ...
'Style','frame', ...
'Units','normalized', ...
'Position', [left bottom+Nspacing width height-2*Nspacing-NbtnHt], ...
'BackgroundColor',frmColor);
ferrH=uicontrol(h, ...
'Style','popup', ...
'BackgroundColor',editColor, ...
'Position', [left+Nspacing top-3*Nspacing-2*NbtnHt width-2*Nspacing NbtnHt], ...
'Units', 'normalized', ...
'String', 'Fuzzy Error (fismatrix)|Use input1 as error|Bounded Error Calculation|External Function (feval)',...
'CallBack', 'nefgui_e (''ferr'')', ...
'Tag', 'ferr');
statHndl=uicontrol(h, ...
'Style','text', ...
'BackgroundColor',frmColor, ...
'HorizontalAlignment','left', ...
'Position', [left+Nspacing top-3*(Nspacing+NbtnHt)-2*Nspacing width/3-2*Nspacing NbtnHt], ...
'Units', 'normalized', ...
'String', 'resourcefile:');
errfismatH=uicontrol(h, ...
'Style','edit', ...
'BackgroundColor',editColor, ...
'Position', [left+width/3+Nspacing top-3*(Nspacing+NbtnHt)-2*Nspacing width*2/3-2*Nspacing NbtnHt], ...
'Units', 'normalized',...
'CallBack', 'nefgui_e (''errfismat'')', ...
'Tag','errfismat');
% Setting global defaults - check if already set
nefdef;
set(ferrH, 'Value', NEFCON_FERR);
set(errfismatH, 'String', NEFCON_EFMN);
elseif strcmp(action, 'close'),
% close current nefgui_e
set(handle,'visible','off');
% close(gcf);
elseif strcmp(action, 'ferr'),
hndl=findobj(gcf, 'Tag', 'ferr');
if hndl ~= [],
if NEFCON_STAT == 0,
NEFCON_FERR = get(hndl, 'Value');
NEFCON_EFMN = '';
if NEFCON_FERR == 1
NEFCON_EFMN = 'ferror.fis';
elseif NEFCON_FERR == 4
NEFCON_EFMN = 'syserr';
else
NEFCON_EFMN = '';
end
hndl=findobj(gcf, 'Tag', 'errfismat');
set(hndl, 'String', NEFCON_EFMN);
else
disp('NEFCON: Could not change error type during execution.');
set(hndl, 'Value', NEFCON_FERR);
end
end
elseif strcmp(action, 'errfismat'),
hndl=findobj(gcf, 'Tag', 'errfismat');
if hndl ~= [],
if NEFCON_STAT == 0,
NEFCON_EFMN = get(hndl, 'String');
else
disp('NEFCON: Could not change error fismatrix during execution.');
set(hndl, 'String', NEFCON_EFMN);
end
end
elseif strcmp(action, 'edit'),
if NEFCON_EFMN ~= []
if NEFCON_FERR == 1
% fismatrix
fuzzy(NEFCON_EFMN);
else
if find(NEFCON_EFMN=='.')
fn = NEFCON_EFMN;
else
fn = [NEFCON_EFMN '.m'];
end
if strcmp(computer,'PCWIN')
eval(['!notepad ' fn]);
else
eval(['!vi ' fn]);
end
end
end
elseif strcmp(action, 'reset'),
%clear all;
NEFCON_STAT = 0;
nefdef;
nefgui_e('status');
nefgui_e('rulelist');
nefgui_e('opt');
nefgui_e('rate');
nefgui_e('ferr');
nefgui_e('inifismat');
nefgui_e('errfismat');
elseif strcmp(action, ''),
% popup window
set(handle,'visible','on');
figure(handle);
else
disp(['nefgui_e: illegal action (' action ')']);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -