www.gusucode.com > 模糊控制工具箱 fuzzy logic toolbox源码程序 > fuzzy/fuzzy/convertfis.m
function [newfis,errorStr]=convertfis(fis) %CONVERTFIS convert v1 fis matrix to v2 fis structure. % See also READFIS. % Kelly Liu 5-9-97 % Copyright 1994-2002 The MathWorks, Inc. % $Revision: 1.7 $ $Date: 2002/04/14 22:22:15 $ errorStr=[]; if nargin<1, errorStr='No FIS matrix provided.'; error(errorStr); return end newfis.name=getfisold(fis, 'name'); newfis.type=getfisold(fis,'type'); newfis.andMethod=getfisold(fis,'andMethod'); newfis.orMethod=getfisold(fis,'orMethod'); newfis.impMethod=getfisold(fis,'impMethod'); newfis.aggMethod=getfisold(fis,'aggMethod'); newfis.defuzzMethod=getfisold(fis,'defuzzMethod'); numInputs=getfisold(fis,'numinputs'); numInputMFs=getfisold(fis,'numinputmfs'); inLabels=getfisold(fis,'inLabels'); inRange=getfisold(fis,'inRange'); inMFLabels=getfisold(fis,'inMFLabels'); inMFTypes=getfisold(fis,'inMFTypes'); %inMFParams=getfisold(fis,'inMFParams'); numOutputs=getfisold(fis,'numoutputs'); numOutputMFs=getfisold(fis,'numoutputmfs'); outLabels=getfisold(fis,'outLabels'); outRange=getfisold(fis,'outRange'); outMFLabels=getfisold(fis,'outMFLabels'); outMFTypes=getfisold(fis,'outMFTypes'); %outMFParams=getfisold(fis,'outMFParams'); for varIndex=1:numInputs, newfis.input(varIndex).name=deblank(inLabels(varIndex,:)); newfis.input(varIndex).range=inRange(varIndex,:); for mfIndex=1:numInputMFs(varIndex), MFIndex2=sum(numInputMFs(1:(varIndex-1)))+mfIndex; newfis.input(varIndex).mf(mfIndex).name=deblank(inMFLabels(MFIndex2,:)); newfis.input(varIndex).mf(mfIndex).type=deblank(inMFTypes(MFIndex2,:)); p=getfisold(fis,'input',varIndex,'MF',mfIndex,'params'); newfis.input(varIndex).mf(mfIndex).params=p; end end for varIndex=1:numOutputs, newfis.output(varIndex).name=deblank(outLabels(varIndex,:)); newfis.output(varIndex).range=outRange(varIndex,:); for mfIndex=1:numOutputMFs(varIndex), MFIndex2=sum(numOutputMFs(1:(varIndex-1)))+mfIndex; newfis.output(varIndex).mf(mfIndex).name=deblank(outMFLabels(MFIndex2,:)); newfis.output(varIndex).mf(mfIndex).type=deblank(outMFTypes(MFIndex2,:)); p=getfisold(fis,'output',varIndex,'MF',mfIndex,'params'); newfis.output(varIndex).mf(mfIndex).params=p; end end numRules=getfisold(fis,'numRules'); ruleList=getfisold(fis,'ruleList'); for ruleIndex=1:numRules, newfis.rule(ruleIndex).antecedent=ruleList(ruleIndex, 1:numInputs); newfis.rule(ruleIndex).consequent=ruleList(ruleIndex, 1+numInputs:numInputs+numOutputs); newfis.rule(ruleIndex).weight=ruleList(ruleIndex, 1+numInputs+numOutputs:1+numInputs+numOutputs); newfis.rule(ruleIndex).connection=ruleList(ruleIndex, 2+numInputs+numOutputs:end); end