最新模糊逻辑工具箱

源代码在线查看: showfis.m

软件大小: 863 K
上传用户: qqpp2q
关键词: 模糊逻辑 工具箱
下载地址: 免注册下载 普通下载 VIP

相关代码

				function showfis(fis)
				%SHOWFIS Display annotated FIS.
				%   SHOWFIS(fismat) displays a text version of the variable
				%   fismat annotated row by row, allowing you to see the
				%   significance of each row.
				%
				%   For example:
				%
				%           a=newfis('tipper');
				%           a=addvar(a,'input','service',[0 10]);
				%           a=addmf(a,'input',1,'poor','gaussmf',[1.5 0]);
				%           a=addmf(a,'input',1,'excellent','gaussmf',[1.5 10]);
				%           showfis(a)
				%
				%   See also GETFIS.
				
				%   Ned Gulley, 3-15-94 Kelly Liu 10-30-97
				%   Copyright (c) 1994-98 by The MathWorks, Inc.
				%   $Revision: 1.14 $  $Date: 1997/12/01 21:45:24 $
				
				if isfield(fis, 'input')
				  NumInputs=length(fis.input);
				else
				  NumInputs=0;
				end
				if isfield(fis, 'output')
				 NumOutputs=length(fis.output);
				else
				 NumOutputs=0;
				end
				
				NumInputMFs=0;
				for i=1:NumInputs
				 NumInputMFs(i)=length(fis.input(i).mf);
				end
				totalInputMFs=sum(NumInputMFs);
				NumOutputMFs=0;
				for i=1:NumOutputs
				 NumOutputMFs(i)=length(fis.output(i).mf);
				end
				totalOutputMFs=sum(NumOutputMFs);
				NumRules=length(fis.rule);
				
				disp(['1.  Name             ',fis.name]);
				disp(['2.  Type             ',fis.type]);
				disp(['3.  Inputs/Outputs   ',mat2str([NumInputs NumOutputs])])
				disp(['4.  NumInputMFs      ',mat2str(NumInputMFs)]);
				disp(['5.  NumOutputMFs     ',mat2str(NumOutputMFs)]);
				disp(['6.  NumRules         ',num2str(length(fis.rule))]);
				disp(['7.  AndMethod        ',fis.andMethod]);
				disp(['8.  OrMethod         ',fis.orMethod]);
				disp(['9.  ImpMethod        ',fis.impMethod]);
				disp(['10. AggMethod        ',fis.aggMethod]);
				disp(['11. DefuzzMethod     ',fis.defuzzMethod]);
				if NumInputs>0,
				    InLabels=getfis(fis,'InLabels');
				    firstRow=12;
				    dispStr=[num2str(firstRow) '. InLabels         ' InLabels(1,:)];
				    for n=2:NumInputs,
				    dispStr=str2mat(dispStr, ...
				        [num2str(firstRow+n-1) '.' 32*ones(1,18) InLabels(n,:)]);
				    end
				    disp(dispStr);
				end
				if NumOutputs>0,
				    OutLabels=getfis(fis,'OutLabels');
				    firstRow=12+NumInputs;
				    dispStr=[num2str(firstRow) '. OutLabels        ' OutLabels(1,:)];
				    for n=2:NumOutputs,
				    dispStr=str2mat(dispStr, ...
				        [num2str(firstRow+n-1) '.' 32*ones(1,18) OutLabels(n,:)]);
				    end
				    disp(dispStr);
				end
				if NumInputs>0,
				    InRange=getfis(fis,'InRange');
				    firstRow=12+NumInputs+NumOutputs;
				    dispStr=[num2str(firstRow) '. InRange          ' mat2str(InRange(1,:),4)];
				    for n=2:NumInputs,
				    dispStr=str2mat(dispStr, ...
				        [num2str(firstRow+n-1) '.' 32*ones(1,18) mat2str(InRange(n,:),4)]);
				    end
				    disp(dispStr);
				end
				if NumOutputs>0,
				    OutRange=getfis(fis,'OutRange');
				    firstRow=12+2*NumInputs+NumOutputs;
				    dispStr=[num2str(firstRow) '. OutRange         ' mat2str(OutRange(1,:),4)];
				    for n=2:NumOutputs,
				    dispStr=str2mat(dispStr, ...
				        [num2str(firstRow+n-1) '.' 32*ones(1,18) mat2str(OutRange(n,:),4)]);
				    end
				        disp(dispStr);
				end
				if totalInputMFs>0,
				    InMFLabels=getfis(fis,'InMFLabels');
				    firstRow=12+2*(NumInputs+NumOutputs);
				    dispStr=[num2str(firstRow) '. InMFLabels       ' InMFLabels(1,:)];
				    for n=2:totalInputMFs,
				    dispStr=str2mat(dispStr, ...
				        [num2str(firstRow+n-1) '.' 32*ones(1,18) InMFLabels(n,:)]);
				    end
				        disp(dispStr);
				end
				if totalOutputMFs>0,
				    OutMFLabels=getfis(fis,'OutMFLabels');
				    firstRow=12+2*(NumInputs+NumOutputs)+totalInputMFs;
				    dispStr=[num2str(firstRow) '. OutMFLabels      ' OutMFLabels(1,:)];
				    for n=2:totalOutputMFs,
				        dispStr=str2mat(dispStr, ...
				        [num2str(firstRow+n-1) '.' 32*ones(1,18) OutMFLabels(n,:)]);
				    end
				    disp(dispStr);
				end
				if totalInputMFs>0,
				    InMFTypes=getfis(fis,'InMFTypes');
				    firstRow=12+2*(NumInputs+NumOutputs)+totalInputMFs+totalOutputMFs;
				    dispStr=[num2str(firstRow) '. InMFTypes        ' InMFTypes(1,:)];
				    for n=2:totalInputMFs,
				    dispStr=str2mat(dispStr, ...
				        [num2str(firstRow+n-1) '.' 32*ones(1,18) InMFTypes(n,:)]);
				    end
				        disp(dispStr);
				end
				if totalOutputMFs>0,
				    OutMFTypes=getfis(fis,'OutMFTypes');
				    firstRow=12+2*(NumInputs+NumOutputs)+2*totalInputMFs+totalOutputMFs;
				    dispStr=[num2str(firstRow) '. OutMFTypes       ' OutMFTypes(1,:)];
				    for n=2:totalOutputMFs,
				    dispStr=str2mat(dispStr, ...
				        [num2str(firstRow+n-1) '.' 32*ones(1,18) OutMFTypes(n,:)]);
				    end
				    disp(dispStr);
				end
				if totalInputMFs>0,
				    InMFParams=getfis(fis,'InMFParams');
				    firstRow=12+2*(NumInputs+NumOutputs)+2*totalInputMFs+2*totalOutputMFs;
				    dispStr=[num2str(firstRow) '. InMFParams       ' mat2str(InMFParams(1,:),4)];
				     for n=2:totalInputMFs,
				        dispStr=str2mat(dispStr, ...
				        [num2str(firstRow+n-1) '.' 32*ones(1,18) mat2str(InMFParams(n,:),4)]);
				    end
				    disp(dispStr);
				end
				if totalOutputMFs>0,
				    OutMFParams=getfis(fis,'OutMFParams');
				    firstRow=12+2*(NumInputs+NumOutputs)+3*totalInputMFs+2*totalOutputMFs;
				    dispStr=[num2str(firstRow) '. OutMFParams      ' mat2str(OutMFParams(1,:),4)];
				    for n=2:totalOutputMFs,
				    dispStr=str2mat(dispStr, ...
				        [num2str(firstRow+n-1) '.' 32*ones(1,18) mat2str(OutMFParams(n,:),4)]);
				    end
				    disp(dispStr);
				end
				if NumRules>0,
				    ruleList=getfis(fis,'ruleList');
				    firstRow=12+2*(NumInputs+NumOutputs)+3*totalInputMFs+3*totalOutputMFs;
				    dispStr=[num2str(firstRow) '. Rule Antecedent  ' mat2str(ruleList(1,1:NumInputs),4)];
				    for n=2:NumRules,
				    dispStr=str2mat(dispStr, ...
				        [num2str(firstRow+n-1) '.' 32*ones(1,18) mat2str(ruleList(n,1:NumInputs),4)]);
				    end
				    disp(dispStr);
				
				    dispStr=[num2str(firstRow) '. Rule Consequent  ' mat2str(ruleList(1,NumInputs+1:NumInputs+NumOutputs),4)];
				    for n=2:NumRules,
				    dispStr=str2mat(dispStr, ...
				        [num2str(firstRow+n-1) '.' 32*ones(1,18) mat2str(ruleList(n,NumInputs+1:NumInputs+NumOutputs),4)]);
				    end
				    disp(dispStr);
				    dispStr=[num2str(firstRow) '. Rule Weigth      ' mat2str(ruleList(1,NumInputs+NumOutputs+1),4)];
				    for n=2:NumRules,
				    dispStr=str2mat(dispStr, ...
				        [num2str(firstRow+n-1) '.' 32*ones(1,18) mat2str(ruleList(n,NumInputs+NumOutputs+1),4)]);
				    end
				    disp(dispStr);
				    dispStr=[num2str(firstRow) '. Rule Connection  ' mat2str(ruleList(1,NumInputs+NumOutputs+2),4)];
				    for n=2:NumRules,
				    dispStr=str2mat(dispStr, ...
				        [num2str(firstRow+n-1) '.' 32*ones(1,18) mat2str(ruleList(n,NumInputs+NumOutputs+2),4)]);
				    end
				    disp(dispStr);  
				end
							

相关资源