Sistema de Inferencia Difusa
Publicado por Jorge Rodriguez (15 intervenciones) el 06/12/2012 22:06:25
Buenas tardes,
Estoy desarrollando un código basado en el toolbox de Logica Difusa en Matlab. El siguiente es un resumen del codigo guardado en un archivo .m :
Según lo leído, entiendo que este mismo archivo debe guardarse con la extensión .fis para que pueda ser leído y evaluado. La variable BB que aparece en el código es una matriz generada en otro Script y guardada en el workspace, donde los valores de la matriz varían de acuerdo a un valor arbitrario que ingresa el usuario. El problema que tengo es que el programa no me actualiza los valores de los outputs referentes a las posiciones de la matriz. Me pueden ayudar?
Estoy desarrollando un código basado en el toolbox de Logica Difusa en Matlab. El siguiente es un resumen del codigo guardado en un archivo .m :
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
function out=Presion_de_inyeccion(BB,w)
a = newfis('Presion_de_inyeccion');
a.input(1).name = 'Rechupes';
a.input(1).range = [0 10];
a.input(1).mf(1).name = 'ligero bajo';
a.input(1).mf(1).type = 'rechupes02';
a.input(1).mf(1).params = [0.031 0.195 0.355 0.51 0.661 0.806 0.947 1.083 1.214 1.341 1.463 1.579 1.692 1.799 1.902 2];
a.input(1).mf(2).name = 'ligero medio';
a.input(1).mf(2).type = 'rechupes13';
a.input(1).mf(2).params = [1.031 1.195 1.355 1.51 1.661 1.806 1.947 2.083 2.214 2.341 2.463 2.579 2.692 2.799 2.902 3];
a.input(1).mf(3).name = 'ligero alto';
a.input(1).mf(3).type = 'rechupes24';
a.input(1).mf(3).params = [2.031 2.195 2.355 2.51 2.661 2.806 2.947 3.083 3.214 3.341 3.463 3.579 3.692 3.799 3.902 4];
a.output(1).name = 'Presion_de_inyeccion';
a.output(1).range = [BB(3,1) BB(4,15)];
a.output(1).mf(1).name = 'disminuyebajo2';
a.output(1).mf(1).type = 'PIdisminuyebajo2';
a.output(1).mf(1).params = [BB(3,1)+0.01 BB(3,2) BB(3,3) BB(3,4) BB(3,5) BB(3,6) BB(3,7) BB(3,8) BB(3,9) BB(3,10) BB(3,11) BB(3,12) BB(3,13) BB(3,14) BB(3,15)];
a.output(1).mf(2).name = 'disminuyemedio2';
a.output(1).mf(2).type = 'PIdisminuyemedio2';
a.output(1).mf(2).params = [BB(2,1) BB(2,2) BB(2,3) BB(2,4) BB(2,5) BB(2,6) BB(2,7) BB(2,8) BB(2,9) BB(2,10) BB(2,11) BB(2,12) BB(2,13) BB(2,14) BB(2,15)];
a.output(1).mf(3).name = 'disminuyealto2';
a.output(1).mf(3).type = 'PIdisminuyealto2';
a.output(1).mf(3).params = [BB(1,1) BB(1,2) BB(1,3) BB(1,4) BB(1,5) BB(1,6) BB(1,7) BB(1,8) BB(1,9) BB(1,10) BB(1,11) BB(1,12) BB(1,13) BB(1,14) BB(1,15)];
a.rule(1).antecedent = [1 0 0 0 0 0 0];
a.rule(1).consequent = 4;
a.rule(1).weight = 0.9;
a.rule(1).connection = 1;
a.rule(2).antecedent = [2 0 0 0 0 0 0];
a.rule(2).consequent = 4;
a.rule(2).weight = 0.9;
a.rule(2).connection = 1;
a.rule(3).antecedent = [3 0 0 0 0 0 0];
a.rule(3).consequent = 4;
a.rule(3).weight = 0.9;
a.rule(3).connection = 1;
a = readfis('Presion_de_inyeccion');
out = evalfis(w,a)
Según lo leído, entiendo que este mismo archivo debe guardarse con la extensión .fis para que pueda ser leído y evaluado. La variable BB que aparece en el código es una matriz generada en otro Script y guardada en el workspace, donde los valores de la matriz varían de acuerdo a un valor arbitrario que ingresa el usuario. El problema que tengo es que el programa no me actualiza los valores de los outputs referentes a las posiciones de la matriz. Me pueden ayudar?
Valora esta pregunta
0