Está en la página 1de 3

%este programa realiza operaciones sobre conjuntos difusos continuos de una

%triangular y una trapezoidal


clear all
clc
disp('Este programa realiza operaciones de dos conjuntos difusos continuos')
disp('El conjunto difuso A es triangular')
disp('El conjunto difuso B es trapezoidal')
disp('Los conjuntos que se pueden realizar son:')
disp('1:Triangular-Triangular; 2:Triangulat-Trapezoidal; 3:Trapezoidal-Trapezoid
al')
opcion=input('Qu conjuntos desea clcular?');
if opcion==1
disp('Los datos para el conjunto A son de la forma [a,b,p]')
disp('Donde a:= punto inicial de la base; b:= punto final de la base; p:= pu
nto de vertice')
A=input('Introduce el vector de datos del primer conjunto Triangular:');
B=input('Introduce el vector de datos del segundo conjunto Triangular:')
;
xi=min(min(A),min(B))-1; xf=max(max(A),max(B))+1;
x=linspace(xi,xf,10000);
altura=1;
pinicial=A(1); pfinal=A(2); paltura=A(3);
m1=(1)/(paltura-pinicial);
b1=-m1*pinicial;
m2=(1)/(paltura-pfinal);
b2=-m2*pfinal;
yA=0.*(x<pinicial)+(m1*x+b1).*((pinicial<=x)&(x<paltura))+(m2*x+b2).*((paltura<=
x)&(x<pfinal))+0.*(pfinal<x);
clear pfinal pinicial m1 m2 b1 b2;
pinicial=A(1); pfinal=A(2); paltura=A(3);
m1=(1)/(paltura-pinicial);
b1=-m1*pinicial;
m2=(1)/(paltura-pfinal);
b2=-m2*pfinal;
yB=0.*(x<pinicial)+(m1*x+b1).*((pinicial<=x)&(x<paltura))+(m2*x+b2).*((paltura<=
x)&(x<pfinal))+0.*(pfinal<x);
end
if opcion==2
disp('Los datos para el conjunto A son de la forma [a,b,p]')
disp('Donde a:= punto inicial de la base; b:= punto final de la base; p:= pu
nto de vertice')
disp('Los datos para el conjunto B son de la forma [a,b,p,q]')
disp('Donde a:= punto inicial de la base; b:= punto final de la base')
disp('Donde p:= punto inicial del ncleo; q:= punto final del ncleo')
A=input('Introduce el vector de datos del conjunto Triangular:');
B=input('Introduce el vector de datos del conjunto Trapezoidal:');
xi=min(min(A),min(B))-1; xf=max(max(A),max(B))+1;
x=linspace(xi,xf,10000);
altura=1;
pinicial=A(1); pfinal=A(2); paltura=A(3);
m1=(1)/(paltura-pinicial);
b1=-m1*pinicial;
m2=(1)/(paltura-pfinal);
b2=-m2*pfinal;
yA=0.*(x<pinicial)+(m1*x+b1).*((pinicial<=x)&(x<paltura))+(m2*x+b2).*((paltura<=
x)&(x<pfinal))+0.*(pfinal<x);
clear pfinal pinicial m1 m2 b1 b2;
pinicial=B(1); pfinal=B(2); paltura1=B(3); paltura2=B(4);
m1=(1)/(paltura1-pinicial); b1=-m1*pinicial;
m2=(1)/(paltura2-pfinal); b2=-m2*pfinal;
yB=0.*(x<pinicial)+(m1*x+b1).*((pinicial<=x)&(x<paltura1))+altura.*((paltura1<=x
)&(x<paltura2))+(m2*x+b2).*((paltura2<=x)&(x<pfinal))+0.*(pfinal<x);
end
if opcion==3
disp('Los datos para el conjunto B son de la forma [a,b,p,q]')
disp('Donde a:= punto inicial de la base; b:= punto final de la base')
disp('Donde p:= punto inicial del ncleo; q:= punto final del ncleo')
A=input('Introduce el vector de datos del primer conjunto Trapezoidal:');
B=input('Introduce el vector de datos del segundo conjunto Trapezoidal:');
xi=min(min(A),min(B))-1; xf=max(max(A),max(B))+1;
x=linspace(xi,xf,10000);
altura=1;
pinicial=B(1); pfinal=B(2); paltura1=B(3); paltura2=B(4);
m1=(1)/(paltura1-pinicial); b1=-m1*pinicial;
m2=(1)/(paltura2-pfinal); b2=-m2*pfinal;
yA=0.*(x<pinicial)+(m1*x+b1).*((pinicial<=x)&(x<paltura1))+altura.*((paltura1<=x
)&(x<paltura2))+(m2*x+b2).*((paltura2<=x)&(x<pfinal))+0.*(pfinal<x);
clear pfinal pinicial m1 m2 b1 b2;
pinicial=B(1); pfinal=B(2); paltura1=B(3); paltura2=B(4);
m1=(1)/(paltura1-pinicial); b1=-m1*pinicial;
m2=(1)/(paltura2-pfinal); b2=-m2*pfinal;
yB=0.*(x<pinicial)+(m1*x+b1).*((pinicial<=x)&(x<paltura1))+altura.*((paltura1<=x
)&(x<paltura2))+(m2*x+b2).*((paltura2<=x)&(x<pfinal))+0.*(pfinal<x);
end

%disp('El conjunto difuso A es triangular')


%disp('El conjunto difuso B es trapezoidal')
%disp('Los datos para el conjunto A son de la forma [a,b,p]')
%disp('Donde a:= punto inicial de la base; b:= punto final de la base; p:= punto
de vertice')
%A=input('Introduce el vector de datos del conjunto A:');
%disp('Los datos para el conjunto B son de la forma [a,b,p,q]')
%disp('Donde a:= punto inicial de la base; b:= punto final de la base')
%disp('Donde p:= punto inicial del ncleo; q:= punto final del ncleo')
%B=input('Introduce el vector de datos del conjunto B:');
disp('Las operaciones que se pueden realizar son:')
disp('1:UNION; 2:INTERSECIN; 3:COMPLEMENTO DE A; 4:DIFERENCIA A-B')
opcion=input('Qu operaciones desea clcular?');

if opcion==1 %union
yresultado=max(yA,yB);
end
if opcion==2 %interseccin
yresultado=min(yA,yB);
end
if opcion==3 %complemento de A
yresultado=1-yA;
end
if opcion==4 %Diferencia A-B
yresultado=min(yA,1-yB);
end
subplot(2,2,1); plot(x,yA,'b.')
subplot(2,2,2); plot(x,yB,'r.')
subplot(2,2,3:4); plot(x,yresultado,'g.')
grid on

También podría gustarte