Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Logica Difusa Utilizando MATLAB
Logica Difusa Utilizando MATLAB
x=
I. INTRODUCCIÓN 5
ans =
1.5000
>>2/(4*3)
ans =
0.1667
Fig. 1. MATLAB permite analizar gráficas de forma interactiva.
Se pueden utilizar las funciones matemáticas habituales. Así,
Para comenzar a utilizar el software es necesario conocer su por ejemplo, la función coseno,
funcionamiento básico y entender su lógica. A continuación se >>cos(pi) % pi es una variable con valor predeterminado
muestran algunos ejemplos de operaciones comunes: 3.14159...
ans =
0.3333
>>format long
>>1/3
Fig. 2. Gráfica de una función senoidal en MATLAB
ans =
0.33333333333333
II.DESARROLLO
>>format % Vuelve al formato estándar que es el de 4
cifras decimales Objetivo
Conocer la programación de las funciones de
Para conocer las variables que se han usado hasta el pertenencia difusas mas representativas en
momento: MATLAB.
>>who
o, si se quiere más información (obsérvese que todas las Se puede señalar que tomando como ejemplo una función en
variables son arrays): específico se puede uno dar cuenta de las similitudes que
presentan con otras funciones, es decir, si tomamos la función
>>whos característica de la función triangular podemos identificar
ciertos parámetros a simple vista que nos ayudarán en la
Name Size Bytes Class construcción de diferentes funciones, como es el caso de una
ans 1x1 8 double array función del tipo hombro o saturación derecha.
eps 1x1 8 double array
x 1x1 8 double array Se puede deducir que el primer comportamiento que lleva la
y 1x1 8 double array grafica de tipo triangulo constituye la misma subida que
presenta la grafica de hombro y cuando llega al punto máximo
Grand total is 4 elements using 32 bytes con valor de pertenencia de uno, se mantiene constante hasta
el final tal y como se ve en la Figura 3.
Para deshacerse de una variable
>>clear y
3
x 0
x
f ( x) x (1.1)
La función f(x) tomara valor de 1 solo a partir
x de cuando x tome el valor asignado a B (beta,
en1 la fig 3 es de 70), por lo que supongo debe
ser desde el valor de B (70 en fig 3) o mayor a
70 (paradelxtipo
Función de pertenencia >=B es 1).
hombro o saturación derecha
Cambio de signo de <= a >=
Anexo A
%%%%%%%%%%%%%%%%%%%
A. Programas de MatLab % Funcion de tipo hombro izquierdo %
%%%%%%%%%%%%%%%%%%%
Los diferentes programas desarrollados en MatLab que se
utiliza en el proceso de la práctica y que permite realizar la %codigo para limpiar memoria
programación de las diferentes funciones de pertenencia y su clear all;
visualización gráfica se presenta a continuación.
% definicion de parametros ejes X Y
xmin=input (' minimo=');
A.1 este código que a continuación se enlista corresponde al xmax=input ('maximo=');
generado para reproducir la función de saturación u hombro res=0.5;
derecho. ymin=0;
ymax=1;
%%%%%%%%%%%%%%%%%%
% Variables de entrada funcion especifica
% funcion de tipo hombro derecho%
b=input('fin=');
%%%%%%%%%%%%%%%%%%
a=input('centro=');
clear all;% funcion para borrar variables de memoria
ejex=xmin:res:xmax;
i=1;
% definicion de parametros de los ejes X Y
xmin=input (' minimo='); %minimo valor eje x
% grados de pertenencia de la funcion hombro izq
xmax=input ('maximo=');
for x=ejex;
res=0.5;
if (x<a)
ymin=0;
pertenhombroizq (i)=1;
ymax=1;
end
if (x>=a)&(x<b)
% variables de entrada de la funcion
pertenhombroizq (i)=1-(x-a)/(b-a);
b=input('centro=');
end
a=input('inicio=');
if (x>=b)
pertenhombroizq(i)=0;
ejex=xmin:res:xmax;
end
i=1;
i=i+1;
end
% condiciones de pertenencia de funcion tipo hombro
for x=ejex;
% codigo para generar resultados graficos
if (x<a)
plot(ejex,pertenhombroizq)
pertenhombroder(i)=0;
title('Funcion de pertenencia hombro izquierdo');
end
axis([xmin,xmax,ymin,ymax]);
if (x>=a)&(x<b)
ylabel('Grado de pertenencia');
pertenhombroder(i)=(x-a)/(b-a);
% fin del codigo
end
if (x>=b)
pertenhombroder(i)=1;
end A.3 El siguiente código corresponde al desarrollado para la
i=i+1; función de pertenencia de tipo pi.
end
%%%%%%%%%%%
% parametros o codigo para graficar resultados
% funcion de tipo PI %
plot(ejex,pertenhombroder)
%%%%%%%%%%%
title('Funcion de pertenencia hombro derecho');
axis([xmin,xmax,ymin,ymax]);
clear all;% recomendable para lilmpiar toda
ylabel('Grado de pertenencia');
%variable que se queda en memoria
% fin del codigo
%rangos de valores para los ejes de la gráfica
Cada uno de los códigos listados en este anexo se encuentran xmin=input (' X_minima=');
debidamente comentados dentro del programa para su fácil xmax=input ('X_maxima=');
comprensión. res=0.5;
ymin=0;
ymax=1;
Se puede identificar los comentarios del programa ya que %parametros de entrada para la funcion especifica
son los únicos que vienen precedidos por un signo de b=input('centro-Min=');
d=input ('centro-Max=');
porcentaje y se encuentran al principio de cada grupo de a=input('inicio=');
instrucciones. c=input('fin=');
ejex=xmin:res:xmax;
i=1;
%pendiente negativa
if (x>=b)&(x<c)
pertentri(i)=1-(x-b)/(c-b);
end
i=i+1;
end