function anfisedit(action);
%ANFISEDIT anfis GUI tool.
% The ANFIS Editor is used to create, train, and test a Sugeno fuzzy system.
%
% See also FUZZY, MFEDIT, RULEEDIT, RULEVIEW, SURFVIEW.
% Kelly Liu, Dec. 96 N. Hickey Jan. 2001
% Copyright 1994-2004 The MathWorks, Inc.
% $Revision: 1.42.4.3 $ $Date: 2004/04/10 23:15:22 $
if nargin<1,
% Open up an untitled system.
newFis=newfis('Untitled', 'sugeno');
newFis=addvar(newFis,'input','emptyinput1',[0 1],'init');
newFis=addvar(newFis,'output','output1',[0 1],'init');
action=newFis;
end
if isstr(action),
if action(1)~='#',
% The string "action" is not a switch for this function,
% so it must be a disk file
fis=readfis(action);
if ~strcmp(fis.type, 'sugeno') | length(fis.output)>1
disp('anfis editor only works on Sugeno systems with one output');
return;
else
action='#initialize';
end
end
else
% For initialization, the fis is passed in as the parameter
fis=action;
action='#initialize';
end;
%=======initialize anfisedit============
switch action
case '#initialize',
if isfield(fis, 'input')
numInputs=length(fis.input);
else
numInputs=0;
end
if isfield(fis, 'output')
numOutputs=length(fis.output);
else
numOutputs=0;
end
if isfield(fis, 'rule')
numRules=length(fis.rule);
else
numRules=0;
end
numInputMFs = zeros(1,numInputs);
for i=1:numInputs
numInputMFs(i)=length(fis.input(i).mf);
end
totalInputMFs=sum(numInputMFs);
fisnodenum=numInputs+2*totalInputMFs+2*numRules+2+1;
infoStr=['Number of nodes: ' num2str(fisnodenum)];
fisName=fis.name;
nameStr=['Anfis Editor: ' fisName];
savefis{1}=fis;
figNumber=figure( ...
'Name',nameStr, ...
'Units', 'pixels', ...
'Color', [.75 .75 .75],...
'NumberTitle','off', ...
'MenuBar','none', ...
'IntegerHandle','off',...
'Tag', 'anfisedit',...
'Userdata', savefis,...
'Visible','off', ...
'DockControls', 'off');
%====================================
% The MENUBAR items
% Call fisgui to create the menubar items
fisgui #initialize
axes( ...
'Units','normalized', ...
'Position',[0.10 0.55 0.65 0.38]);
%===================================
left=0.03;
right=0.75;
bottom=0.05;
labelHt=0.03;
spacing=0.005;
frmBorder=0.012;
%======Set up the anfis info Window==========
top=0.5;
% First, the all the frames
frmPos=[0 0 1 .47];
frmHandle=LocalBuildFrmTxt(frmPos, '', 'frame', 'mainfrm');
frmPos=[.01 .115 .292 .34];
frmHandle=LocalBuildFrmTxt(frmPos, '', 'frame', 'datafrm');
midfrmwidth=.25;
frmPos=[.315 .115 midfrmwidth .34];
frmHandle=LocalBuildFrmTxt(frmPos, '', 'frame', 'midbtnfrm');
frmPos=[.575 .115 .195 .34];
frmHandle=LocalBuildFrmTxt(frmPos, '', 'frame', 'rightbtnfrm');
frmPos=[.78 .115 .21 .34];
frmHandle=LocalBuildFrmTxt(frmPos, '', 'frame', 'infofrm');
frmPos=[.01 .0218 .62 .073];
frmHandle=LocalBuildFrmTxt(frmPos, '', 'frame', 'statusfrm');
frmPos=[.64 .0218 .35 .073];
frmHandle=LocalBuildFrmTxt(frmPos, '', 'frame', 'statusfrm');
%======load data===============
left=.02;
labelPos=[.05+left .42 .15 .042];
lableHndl=LocalBuildFrmTxt(labelPos, ' Load data', 'text', 'lable2');
width=.13;
height=.04;
left1=left+.14;
width1=.13;
height1=.04;
labelPos=[left .38 .1 .042];
lableHndl=LocalBuildFrmTxt(labelPos, 'Type:', 'text', 'lable2');
labelPos=[left1 .38 .1 .042];
lableHndl=LocalBuildFrmTxt(labelPos, 'From:', 'text', 'lable2');
labelPos=[left .33 width height];
mcwPos=[left1 .30 width1 height1];
lableHandle=LocalBuildUi(labelPos, 'radio', 'anfisedit #radioloadtype', 'Training', 'dattype');
set(lableHandle, 'Max', 1, 'Value', 1);
% Then the editable text field
mcwHndl=LocalBuildUi(mcwPos, 'radio', 'anfisedit #radioloadfrom', 'disk', 'trndatin');
set(mcwHndl, 'Max', 1, 'Value', 1);
labelPos=[left .28 width height];
mcwPos=[left1 .23 width1 height1];
lableHandle=LocalBuildUi(labelPos, 'radio', 'anfisedit #radioloadtype', 'Testing','dattype');
set(lableHandle, 'Max', 1, 'Min', 0);
% Then the editable text field
mcwHndl=LocalBuildUi(mcwPos, 'radio', 'anfisedit #radioloadfrom', 'worksp.', 'trndatin');
labelPos=[left .23 width height];
lableHandle=LocalBuildUi(labelPos, 'radio', 'anfisedit #radioloadtype', 'Checking','dattype');
set(lableHandle, 'Max', 1, 'Min', 0);
labelPos=[left .18 width height];
lableHandle=LocalBuildUi(labelPos, 'radio', 'anfisedit #radioloadtype', 'Demo','dattype');
set(lableHandle, 'Max', 1, 'Min', 0);
% set(mcwHndl, 'Max', 1);
mcwPos=[left .13 .13 height];
%=======The Open Training set button==============
delHndl=LocalBuildUi(mcwPos, 'pushbutton', 'anfisedit #opentrn', 'Load Data...', 'opentrn');
mcwPos=[left+.14 .13 .13 height];
delHndl=LocalBuildUi(mcwPos, 'pushbutton', 'anfisedit #cleardata', 'Clear Data', 'opentrn');
%========Set up the Status Window ==================
% Then the status text field
mcwPos=[0.02 0.04 0.55 0.040];
mcwHndl=LocalBuildUi(mcwPos, 'text', '', '', 'status');
%==========set genfis area============================
% The text label
labelPos=[.34 .42 .18 .042];
lableHndl=LocalBuildFrmTxt(labelPos, ' Generate FIS', 'text', 'lable2');
left=.33;
width=.225;
height=.04;
labelPos=[left .35 width height];
lableHandle=LocalBuildUi(labelPos, 'radio', 'anfisedit #radiogenfis', 'Load from disk', 'genfis');
labelPos=[left .30 width height];
lableHandle=LocalBuildUi(labelPos, 'radio', 'anfisedit #radiogenfis', 'Load from worksp.', 'genfis');
labelPos=[left .25 width height];
lableHandle=LocalBuildUi(labelPos, 'radio', 'anfisedit #radiogenfis', 'Grid partition', 'genfis');
set(lableHandle, 'Max', 1, 'Value', 1);
labelPos=[left .20 width height];
lableHandle=LocalBuildUi(labelPos, 'radio', 'anfisedit #radiogenfis', 'Sub. clustering', 'genfis');
% Then the editable text field
labelPos=[left .13 width height];
mcwHndl=LocalBuildUi(labelPos, 'pushbutton', 'anfisedit #genfis', 'Generate FIS ...', 'genfisbtn');
%====================================
% Information for anfis
left=0.80;
btnWid=0.15;
top=.55;
frmBorder=0.02;
frmPos=[left-frmBorder .5 btnWid+2*frmBorder .46];
frmHandle=LocalBuildFrmTxt(frmPos, '', 'frame', '');
labelPos=[left .95 .15 .030];
lableHndl=LocalBuildFrmTxt(labelPos, ' ANFIS Info.', 'text', 'lable2');
% Then the info text field
mcwPos=[left .65 .15 .24];
textHndl=LocalBuildFrmTxt(mcwPos, infoStr, 'text', 'Comments');
mcwPos=[left .57 .15 .04];
% Create the Structure button
StrctBtnHndl=LocalBuildUi(mcwPos, 'pushbutton', '', 'Structure', 'plotstrc');
set(StrctBtnHndl,'CallBack', @LocalStructureBtnCallback);
set(StrctBtnHndl, 'Backgroundcolor', [0.75 0.75 0.75], 'HorizontalAlignment', 'center');
mcwPos=[left .52 .15 .04];
delHndl=LocalBuildUi(mcwPos, 'pushbutton', 'cla', 'Clear Plot', '');
set(delHndl, 'HorizontalAlignment', 'center');
%=========The Train fis=============
labelPos=[.6 .42 .14 .042];
lableHndl=LocalBuildFrmTxt(labelPos, ' Train FIS', 'text', 'lable2');
frmBorder=0.02;
btnHt=0.03;
评论0