1. 19/03/17 06:25 PM C:UsersJAIRODocumentsseñ...dist.m 1 of 3
close all;
clear all;
clc;
delete(instrfindall);%Cierre todos los
%puertos seriales abiertos que no estén en uso
a = serial('COM4'); %Define puerto serie
a.BaudRate=9600; %Definir la velocidad en baudios
fopen(a); %Abre el puerto serial
data = []; %Vectores vacíos para el almacenamiento de datos
ix = [];
tic;
i=0;
flushinput(a); %clear any stored data on the serial
Stop=1;
uicontrol('Style','pushbutton','String','Parar',...
'Callback','Stop=0;')%crea un boton para parar la simulación
while Stop
i=i+1;
time(i)=toc;
data(i) = str2double(fscanf(a));
ix(i) = i/10;
Distancia=data(i);
if Distancia < 100
else
distancia= 'FUERA DE RANGO'
end
for x=Distancia;
if 20<x & x<30
mcerca=(30-x)/10
elseif x <= 20;
mcerca=1;
elseif x>30
mcerca=0;
else mcerca=0;
end
if 20<x & x<30 ;
cerca =(x-20)/10;
elseif (45<x) & (x<55);
cerca=(55-x)/10;
elseif 30<=x & x<=45;
cerca= 1;
elseif 20>x & x>55;
cerca=0;
else cerca=0;
end
if 45<x & x<55;
lejos=(x-45)/10;
elseif 70<x & x<80;
lejos=(80-x)/10;
elseif 55<=x & x<=70;
lejos= 1;
2. 19/03/17 06:25 PM C:UsersJAIRODocumentsseñ...dist.m 2 of 3
elseif 45>x & x>80;
lejos=0;
else lejos=0;
end
if 70<x & x<80
mlejos=(x-70)/10
elseif x>=80;
mlejos= 1;
elseif x<70;
mlejos=0;
else mlejos=0;
end
if mcerca>cerca & mcerca>lejos & mcerca>mlejos;
Estado='mcerca';
elseif cerca>mcerca & cerca>lejos & cerca>mlejos;
Estado='cerca';
elseif lejos>mcerca & lejos>cerca & lejos>mlejos;
Estado='lejos';
elseif mlejos>mcerca & mlejos>cerca & mlejos>lejos;
Estado='mlejos';
end
Estado %
Distancia %muestra en ventana de comandos la distancia
end
inc= 0.01;
e=0:inc:100;
D=0:inc:100;
mc = trapmf(D,[-1 0 20 30 ]);
ce = trapmf(D,[20 30 45 55 ]);
le = trapmf(D,[45 55 70 80 ]);
ml = trapmf(D,[70 80 100 100 ]);
% figure(1);
% subplot(1,1,1), plot(e,mc,e,ce,e,le,e,ml,'LineWidth',4)
% set(gca,'FontSize',10), legend('mc','ce','le','ml')
% xlabel('error'), ylabel('Pertenencia')
% axis([0 100 0 1])
%accion
mcerca = trapmf(D,[-1 0 20 30 ]);
cerca = trapmf(D,[20 30 45 55 ]);
lejos = trapmf(D,[45 55 70 80 ]);
mlejos = trapmf(D,[70 80 100 100 ]);
% figure(2);
% subplot(2,1,1), plot(D,mcerca,D,cerca,D,lejos,D,mlejos,'LineWidth',4)
% set(gca,'FontSize',10), legend('mcerca','cerca','lejos','mlejos')
% xlabel('Distancia'), ylabel('Membresia')
% axis([0 100 0 1])
for n= find(e==x);
% figure(1);
% subplot(3,1,1), hold on, plot(x,fr(n),'*',x,ti(n),'*',x,ca(n
3. 19/03/17 06:25 PM C:UsersJAIRODocumentsseñ...dist.m 3 of 3
% '*','LineWidth',4), hold off
A1= min(mcerca,mc(n));
A2= min(cerca,ce(n));
A3= min(lejos,le(n));
A4= min(mlejos,ml(n));
A= max(A1,max(A2,max(A3,A4)));
figure(2);
subplot(1,1,1), plot(D,A,'LineWidth',4)
set(gca,'FontSize',18), legend('V')
axis([0 100 0 1])
centro_masa= defuzz(D,A,'centroid')
hold on, plot(centro_masa*ones(1,3),[0 0.5 1],'r','LineWidth',4)
end
end
centro_masa