Matlab - Lógica Difusa script

 
Vista:

Lógica Difusa script

Publicado por Jesus Ortega (3 intervenciones) el 18/02/2016 17:57:08
Buenos días, necesito ayuda en este código, me marca algunos errores.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
function [] = sistema_difuso3(Fuerza,Distancia)
 
if 0<=Fuerza && Fuerza<=10
    FBaja=1;
    FMedia=0;
    FAlta=0;
elseif 25==Fuerza
    FBaja=0;
    FMedia=1;
    FAlta=0;
elseif 40<=Fuerza && Fuerza<=50
    FBaja=0;
    FMedia=0;
    FAlta=1;
%sentancias con formula de fuerza  
elseif 10<Fuerza && Fuerza<25
    FBaja=(25-Fuerza)/15;
    FMedia=(1-FBaja);
    FAlta=0;
elseif 25<Fuerza && Fuerza<40
    FBaja=0;
    FMedia=(40-Fuerza)/15;
    FAlta=(1-FMedia);
end
 
%sentencia para distanca
if 0<=Distancia && Distancia<=10
    DBaja=1;
    DMedia=0;
    DAlta=0;
elseif 25==Distancia
    DBaja=0;
    DMedia=1;
    DAlta=0;
elseif 40<=Distancia && Distancia<=50
    DBaja=0;
    DMedia=0;
    DAlta=1;
%sentencia con formula para distancia
elseif 10<Distancia && Distancia<25
    DBaja=(25-Distancia)/15;
    DMedia=(1-DBaja);
    DAlta=0;
elseif 25<Distancia && Distancia<40
    DBaja=0;
    DMedia=(40-Distancia)/15;
    DAlta=(1-DMedia);
end
%reglas de sistema difuso
B1=min(FBaja,DBaja);
B2=min(FBaja,DMedia);
B3=min(FMedia,DBaja);
M1=min(FBaja,DAlta);
M2=min(FMedia,DMedia);
M3=min(FAlta,DBaja);
A1=min(FMedia,DAlta);
A2=min(FAlta,DMedia);
A3=min(FAlta,DAlta);
 
%Solucion del sistema
Bs1=[B1 B2 B3];
EBt=max(Bs1);
Mt1= [M1 M2 M3];
EMt=max(Mt1);
As1= [A1 A2 A3];
EAt=max(As1);
 
%Defusificación
s=((30*EBt)+(150*EMt)+(270*EAt))/((3*EBt)+(3*EMt)+(3*EAt));
 
 
display('El Porcentaje de energia es:   ')
display(s)
end
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Lógica Difusa script

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 20/02/2016 17:16:38
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
function sistema_difuso3
while 1
 a=round([52*rand 52*rand] ), sistema_difuso4(a(1),a(2))
end
end
function sistema_difuso4(Fuerza,Distancia)
if Fuerza>50 || Distancia>50
    display('datos incorrectos')
  pause(0.2)
    return;
end
 
if 0<=Fuerza && Fuerza<=10
    FBaja=1;
    FMedia=0;
    FAlta=0;
elseif 25==Fuerza
    FBaja=0;
    FMedia=1;
    FAlta=0;
elseif 40<=Fuerza && Fuerza<=50
    FBaja=0;
    FMedia=0;
    FAlta=1;
%sentancias con formula de fuerza  
elseif 10<Fuerza && Fuerza<25
    FBaja=(25-Fuerza)/15;
    FMedia=(1-FBaja);
    FAlta=0;
elseif 25<Fuerza && Fuerza<40
    FBaja=0;
    FMedia=(40-Fuerza)/15;
    FAlta=(1-FMedia);
end
 
%sentencia para distanca
if 0<=Distancia && Distancia<=10
    DBaja=1;
    DMedia=0;
    DAlta=0;
elseif 25==Distancia
    DBaja=0;
    DMedia=1;
    DAlta=0;
elseif 40<=Distancia && Distancia<=50
    DBaja=0;
    DMedia=0;
    DAlta=1;
%sentencia con formula para distancia
elseif 10<Distancia && Distancia<25
    DBaja=(25-Distancia)/15;
    DMedia=(1-DBaja);
    DAlta=0;
elseif 25<Distancia && Distancia<40
    DBaja=0;
    DMedia=(40-Distancia)/15;
    DAlta=(1-DMedia);
end
%reglas de sistema difuso
B1=min(FBaja,DBaja);
B2=min(FBaja,DMedia);
B3=min(FMedia,DBaja);
M1=min(FBaja,DAlta);
M2=min(FMedia,DMedia);
M3=min(FAlta,DBaja);
A1=min(FMedia,DAlta);
A2=min(FAlta,DMedia);
A3=min(FAlta,DAlta);
 
%Solucion del sistema
Bs1=[B1 B2 B3];
EBt=max(Bs1);
Mt1= [M1 M2 M3];
EMt=max(Mt1);
As1= [A1 A2 A3];
EAt=max(As1);
 
%Defusificación
s=((30*EBt)+(150*EMt)+(270*EAt))/((3*EBt)+(3*EMt)+(3*EAt));
display('El Porcentaje de energia es:   ')
  display('datos correctos')
display(s)
pause(0.2)
end

Yo no encuentro ningun error si ejecuto con los datos correctos. Podrias decir cual es el error que mencionas.

Saludos
JOSÉ JEREMÍAS CABALLERO
Asesoría online en Matlab
Servicios de programación en Matlab
[email protected]
Toda ayuda gratuita es vía foro


http://matlabcaballero.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar