📄 cmfdlg.m
字号:
function cmfdlg(action,fis,varType,varIndex)
%CMFDLG Create dialog for adding customized membership function.
% CMFDLG(action,fisMatrix,varType,varIndex) will open a dialog
% box for fisMatrix using the default MF name "trimf".
% varType and varIndex indicate exactly which variable you
% want to add the customized membership functions to.
% Ned Gulley, 9-15-94
% Copyright (c) 1994-98 by The MathWorks, Inc.
% $Revision: 1.11 $ $Date: 1997/12/01 21:44:43 $
if ~isstr(action),
% For initialization, the fis matrix is passed in as the parameter
oldFigNumber=action;
action='#initialize';
end;
if strcmp(action,'#initialize'),
labelStr='Add customized membership function';
labelStr1='MF name';
editStr1=' mf1';
labelStr2='M-File function name';
editStr2=' trimf';
labelStr3='Parameter list';
varRange=eval(['fis.' varType '(' num2str(varIndex) ').range']);
editStr3=[' ' mat2str([varRange(1) mean(varRange) varRange(2)],4)];
%===================================
% Information for all objects
frmColor=192/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=6;
figPos=get(0,'DefaultFigurePosition');
figPos(3:4)=[360 190];
maxRight=figPos(3);
maxTop=figPos(4);
btnWid=160;
btnHt=23;
%====================================
% The FIGURE
figNumber=figure( ...
'NumberTitle','off', ...
'Color',[0.9 0.9 0.9], ...
'Visible','off', ...
'MenuBar','none', ...
'UserData',fis, ...
'Units','pixels', ...
'Position',figPos, ...
'Tag','gui2ws', ...
'BackingStore','off');
figPos=get(figNumber,'position');
%====================================
% The MAIN frame
top=maxTop-border;
bottom=border;
right=maxRight-border;
left=border;
frmBorder=spacing;
frmPos=[left-frmBorder bottom-frmBorder ...
right-left+frmBorder*2 top-bottom+frmBorder*2]+[1 1 1 1];
mainFrmHndl=uicontrol( ...
'Style','frame', ...
'Units','pixel', ...
'Position',frmPos, ...
'BackgroundColor',frmColor);
%====================================
% The UPPER frame
top=maxTop-spacing-border;
bottom=border+9*spacing+4*btnHt;
right=maxRight-border-spacing;
left=border+spacing;
frmBorder=spacing;
frmPos=[left-frmBorder bottom-frmBorder ...
right-left+frmBorder*2 top-bottom+frmBorder*2]+[1 0 1 0];
varFrmHndl=uicontrol( ...
'Units','pixel', ...
'Style','frame', ...
'Position',frmPos, ...
'BackgroundColor',frmColor);
varSpacing=(top-bottom-2*btnHt);
%------------------------------------
% The STRING text field
n=1;
labelStr=labelStr;
pos=[left top-btnHt*n-varSpacing*(n-1) right-left btnHt];
uicontrol( ...
'Units','pixel', ...
'Style','text', ...
'BackgroundColor',frmColor, ...
'HorizontalAlignment','left', ...
'Position',pos, ...
'String',labelStr);
%====================================
% The EDIT frame
bottom=border+4*spacing+btnHt;
top=bottom+3*btnHt+2*spacing;
right=maxRight-border-spacing;
left=border+spacing;
frmBorder=spacing;
frmPos=[left-frmBorder bottom-frmBorder ...
right-left+frmBorder*2 top-bottom+frmBorder*2]+[1 0 1 0];
topFrmHndl=uicontrol( ...
'Style','frame', ...
'Units','pixel', ...
'Position',frmPos, ...
'BackgroundColor',frmColor);
%------------------------------------
% The MFTYPE text field
labelStr=labelStr1;
pos=[left top-btnHt btnWid btnHt];
uicontrol( ...
'Units','pixel', ...
'Style','text', ...
'HorizontalAlignment','left', ...
'Position',pos, ...
'BackgroundColor',frmColor, ...
'String',labelStr);
%------------------------------------
% The MFNAME field
editStr=editStr1;
pos=[right-btnWid top-btnHt btnWid btnHt];
uicontrol( ...
'Units','pixel', ...
'Style','edit', ...
'String',editStr, ...
'Tag','mfname', ...
'HorizontalAlignment','left', ...
'Position',pos, ...
'UserData',varType, ...
'BackgroundColor',editColor);
%------------------------------------
% The MFNAME text field
labelStr=labelStr2;
pos=[left top-2*btnHt-spacing btnWid btnHt];
uicontrol( ...
'Units','pixel', ...
'Style','text', ...
'HorizontalAlignment','left', ...
'Position',pos, ...
'BackgroundColor',frmColor, ...
'String',labelStr);
%------------------------------------
% The MFTYPE field
editStr=editStr2;
pos=[right-btnWid top-2*btnHt-spacing btnWid btnHt];
uicontrol( ...
'Units','pixel', ...
'Style','edit', ...
'String',editStr, ...
'Tag','mftype', ...
'HorizontalAlignment','left', ...
'Position',pos, ...
'UserData',varType, ...
'BackgroundColor',editColor);
%------------------------------------
% The MFPARAMS text field
labelStr=labelStr3;
pos=[left top-3*btnHt-2*spacing btnWid btnHt];
uicontrol( ...
'Units','pixel', ...
'Style','text', ...
'HorizontalAlignment','left', ...
'Position',pos, ...
'BackgroundColor',frmColor, ...
'String',labelStr);
%------------------------------------
% The MFPARAMS field
editStr=editStr3;
pos=[right-btnWid top-3*btnHt-2*spacing btnWid btnHt];
uicontrol( ...
'Units','pixel', ...
'Style','edit', ...
'String',editStr, ...
'Tag','mfparam', ...
'HorizontalAlignment','left', ...
'UserData',varIndex, ...
'Position',pos, ...
'BackgroundColor',editColor);
%====================================
% The CLOSE frame
bottom=border+spacing;
top=bottom+btnHt;
right=maxRight-border-spacing;
left=border+spacing;
frmBorder=spacing;
frmPos=[left-frmBorder bottom-frmBorder ...
right-left+frmBorder*2 top-bottom+frmBorder*2]+[1 0 1 0];
clsFrmHndl=uicontrol( ...
'Style','frame', ...
'Units','pixel', ...
'Position',frmPos, ...
'BackgroundColor',frmColor);
%------------------------------------
% The CANCEL button
labelStr='Cancel';
callbackStr='close(gcf)';
infoHndl=uicontrol( ...
'Style','push', ...
'Position',[left bottom btnWid btnHt], ...
'BackgroundColor',btnColor, ...
'String',labelStr, ...
'Callback',callbackStr);
%------------------------------------
% The OKAY button
labelStr='OK';
callbackStr='cmfdlg #okay';
closeHndl=uicontrol( ...
'Style','push', ...
'Position',[right-btnWid bottom btnWid btnHt], ...
'BackgroundColor',btnColor, ...
'String',labelStr, ...
'UserData',oldFigNumber, ...
'Callback',callbackStr);
% Normalize all coordinates
hndlList=findobj(figNumber,'Units','pixels');
set(hndlList,'Units','normalized');
% Uncover the figure
set(figNumber, ...
'Visible','on');
elseif strcmp(action,'#okay'),
figNumber=gcf;
oldFigNumber=get(gco,'UserData');
mfNameHndl=findobj(figNumber,'Type','uicontrol','Tag','mfname');
mfTypeHndl=findobj(figNumber,'Type','uicontrol','Tag','mftype');
mfParamHndl=findobj(figNumber,'Type','uicontrol','Tag','mfparam');
varType=get(mfTypeHndl,'UserData');
varIndex=get(mfParamHndl,'UserData');
mfType=deblank(get(mfTypeHndl,'String'));
mfType=fliplr(deblank(fliplr(mfType)));
mfParams=eval(get(mfParamHndl,'String'));
mfName=deblank(get(mfNameHndl,'String'));
mfName=fliplr(deblank(fliplr(mfName)));
fis=get(figNumber,'UserData');
fis=addmf(fis,varType,varIndex,mfName,mfType,mfParams);
close(figNumber);
figure(oldFigNumber);
% Push the change onto the undo stack and update all related GUI tools
pushundo(oldFigNumber,fis);
updtfis(oldFigNumber,fis,[1]);
mfedit('#update',varType,varIndex)
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -