00001 /* 00002 * Copyright (c) 2007. The BATI team. All right reserved. 00003 * 00004 * This file is part of BATI library. 00005 * 00006 * BATI library is free software: you can redistribute it and/or modify 00007 * it under the terms of the GNU General Public License as published by 00008 * the Free Software Foundation, either version 3 of the License, or 00009 * (at your option) any later version. 00010 * 00011 * BATI library is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 * GNU General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU General Public License 00017 * along with BATI library. If not, see <http://www.gnu.org/licenses/>. 00018 */ 00019 /* ************************* fusion_floue.h **********************************/ 00020 /* */ 00021 /* descripteurs et prototypes associes a l'operateur fusion_floue */ 00022 /* */ 00023 /* Derniere modif : Lionel VALET, 19/11/99 */ 00024 /* ****************************************************************************/ 00025 00026 /* pas de code avant cette ligne*/ 00027 #ifndef __ff_symb2 00028 #define __ff_symb2 00029 00030 00031 #define MAXI(i,j) ( (i) > (j) ? (i) : (j) ) 00032 #define MINI(i,j) ( (i) < (j) ? (i) : (j) ) 00033 #define SQR(i) ( (i) * (i) ) 00034 00035 typedef int (*PFI)(); //pointer to function that returns int 00036 00037 typedef char chaine[100]; 00038 typedef unsigned char Byte; 00039 00040 typedef struct 00041 { 00042 chaine nom; 00043 float gauche; 00044 float mode; 00045 float droite; 00046 } Symbol; 00047 00048 typedef struct 00049 { 00050 unsigned char * liste_in; 00051 unsigned char nom_out; 00052 float ponderation; 00053 }Une_regle; 00054 00055 typedef struct 00056 { 00057 int nb_regle; 00058 Une_regle * regle; 00059 }Les_regles; 00060 00061 typedef struct 00062 { 00063 chaine nom; 00064 unsigned char nb_fct; 00065 Symbol *part; 00066 }Partition; 00067 00068 typedef float degre_app; 00069 typedef degre_app *ss_ens_flou_symb; 00070 00071 typedef struct 00072 { 00073 int nb_descripteur; 00074 ss_ens_flou_symb * descript; 00075 }Descripteur; 00076 00077 typedef struct 00078 { 00079 unsigned char nb_entree; 00080 Partition *partition; 00081 }Fct_appartenance; 00082 00085 typedef struct { 00086 int Tnorme; 00087 int Tconorme; 00088 PFI tn; //pointeur a la fonction de calcul de norme 00089 PFI tcn; //pointeur a la fonction de calcul de tconorme 00090 int defuzz; 00091 Fct_appartenance fonction; 00092 Les_regles rgl; 00093 Descripteur des; 00094 char *nom; 00095 } fusion_floue_t; 00096 00097 param *ff_symb_lect(fusion_floue_t *des, param *ptp, char *debq); 00098 int ff_symb_init(fusion_floue_t *des); 00099 int ff_symb_calc(fusion_floue_t *des, float *data, float *result); 00100 int ff_symb_ferm(fusion_floue_t *des); 00101 00102 00103 /*pas de code après cette ligne */ 00104 #endif