% FUZZY.M %-------------------------------------------------------------- % This is Fuzzy Control Low function % Main program of this function is "flcli.m" %-------------------------------------------------------------- function c_crisp=fuzzy(Y,r) dt=0.01; % sampling period leng=length(Y); y0=Y(leng,1); % output y(k) if leng==1; y1=y0; % output y(k-1) else y1=Y(leng-1,1); end; e0=r-y0; % error e(k)=(k)-y(k) e1=r-y1; % error e(k-1)=r(k-1)-y(k-1) e=e0; % signal(E) de=3*(e0-e1); % signal(DE) %--------------------------------------------------------------- % first step --> Fuzzification (FI) % by use of "FI.M" file %--------------------------------------------------------------- membership_E=fi(e); pbe=membership_E(1,1); pme=membership_E(2,1); pse=membership_E(3,1); zee=membership_E(4,1); nse=membership_E(5,1); nme=membership_E(6,1); nbe=membership_E(7,1); membership_DE=fi(de); pbde=membership_DE(1,1); pmde=membership_DE(2,1); psde=membership_DE(3,1); zede=membership_DE(4,1); nsde=membership_DE(5,1); nmde=membership_DE(6,1); nbde=membership_DE(7,1); %--------------------------------------------------------------- % second step --> Decision Making Logic % by use of "dml.m" file %--------------------------------------------------------------- membership_C=dml(membership_E,membership_DE); pbc=membership_C(1,1); pmc=membership_C(2,1); psc=membership_C(3,1); zec=membership_C(4,1); nsc=membership_C(5,1); nmc=membership_C(6,1); nbc=membership_C(7,1); %-------------------------------------------------------------- % third step --> DeFuzzification Interface %-------------------------------------------------------------- c=[1;2/3;1/3;0;-1/3;-2/3;-1]; c_max=2; pT=pbc+pmc+psc+zec+nsc+nmc+nbc; c_crisp=c_max*(pbc*c(1)+pmc*c(2)+psc*c(3)+zec*c(4)+nsc*c(5)+nmc*c(6)+nbc*c(7))/pT;