/*************************************************************************************************************************************/ /* */ /* C O R R E L A T I O N E N T R E D E U X F I C H I E R S N U M E R I Q U E S : */ /* */ /* */ /* Author of '$xrv/correlations.01$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20160420174347). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* I N T E R F A C E ' listG ' : */ /* */ /* */ /* :Debut_listG: */ /* :Fin_listG: */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D I R E C T I V E S S P E C I F I Q U E S D E C O M P I L A T I O N : */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* F I C H I E R S D ' I N C L U D E S : */ /* */ /*************************************************************************************************************************************/ #include INCLUDES_BASE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* V A L E U R S I M P L I C I T E S D E S P A R A M E T R E S : */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D U F I C H I E R : */ /* */ /*************************************************************************************************************************************/ #include xrv/ARITHMET.1d.I" #define NOMBRE_DE_DECIMALES \ SEIZE #include xrv/ARITHMET.21.I" #include xrv/champs_5.41.I" #define VALEUR_1_IMPLICITE \ FZERO #define VALEUR_2_IMPLICITE \ FZERO gGENERATION_D_UN_FICHIER(fichier1_des_valeurs,liste1_des_valeurs); gGENERATION_D_UN_FICHIER(fichier2_des_valeurs,liste2_des_valeurs); /* Definition en memoire des fichiers. */ #define ELEMENT_DU_FICHIER1(index) \ gELEMENT_DU_FICHIER(liste1_des_valeurs,index) #define ELEMENT_DU_FICHIER2(index) \ gELEMENT_DU_FICHIER(liste2_des_valeurs,index) /* Acces a un element courant des fichiers. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E S E D I T I O N S : */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* C O R R E L A T I O N E N T R E D E U X F I C H I E R S N U M E R I Q U E S : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock #include xrv/ARITHMET.22.I" #include xci/valeurs.03.I" /*..............................................................................................................................*/ #include xrv/champs_5.1A.I" GET_ARGUMENTS_(nombre_d_arguments ,BLOC(PROCESS_ARGUMENT_I("nombre_elements=""ne=",nombre_d_elements ,BLOC(VIDE;) ,BLOC(Bblock PRINT_AVERTISSEMENT("'ne=' doit etre defini avant toute entree de fichiers"); Eblock ) ); PROCESS_ARGUMENTS_DE_DEFINITION_DES_FICHIERS_01; PROKESF_ARGUMENT_FICHIER("fichier1=" ,fichier1_des_valeurs ,liste1_des_valeurs ,VALEUR_1_IMPLICITE ,lTRANSFORMAT_0d ,iGENERATION_D_UN_FICHIER ); PROKESF_ARGUMENT_FICHIER("fichier2=" ,fichier2_des_valeurs ,liste2_des_valeurs ,VALEUR_2_IMPLICITE ,lTRANSFORMAT_0d ,iGENERATION_D_UN_FICHIER ); PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_3; PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_1; ) ); begin_nouveau_block Bblock DEFV(Float,INIT(moyenne_courante_1,FZERO)); DEFV(Float,INIT(moyenne_courante_2,FZERO)); DEFV(Float,INIT(ecart_type_1,FZERO)); DEFV(Float,INIT(ecart_type_2,FZERO)); DEFV(Float,INIT(somme_des_produits_des_differences_aux_moyennes,FZERO)); DEFV(Float,INIT(somme_des_carres_des_differences_aux_moyennes_1,FZERO)); DEFV(Float,INIT(somme_des_carres_des_differences_aux_moyennes_2,FZERO)); DEFV(Int,INIT(nombre_d_elements_traites,ZERO)); /* Preparation des resultats... */ DEFV(Float,INIT(coefficient_de_correlation,FLOT__UNDEF)); /* Coefficient de correlation entre les deux fichiers... */ DoIn(index ,PREMIER_ELEMENT_D_UN_FICHIER ,DERNIER_ELEMENT_D_UN_FICHIER ,I ) Bblock DEFV(Float,INIT(valeur_courante_1,ELEMENT_DU_FICHIER1(index))); DEFV(Float,INIT(valeur_courante_2,ELEMENT_DU_FICHIER2(index))); /* Recuperation des valeurs courantes dans le fichier. */ INCR(moyenne_courante_1,valeur_courante_1); INCR(moyenne_courante_2,valeur_courante_2); INCR(nombre_d_elements_traites,I); /* Calcul des moyennes. */ Eblock EDoI EGAL(moyenne_courante_1,DIVZ(moyenne_courante_1,nombre_d_elements_traites)); EGAL(moyenne_courante_2,DIVZ(moyenne_courante_2,nombre_d_elements_traites)); /* Calcul des moyennes. */ DoIn(index ,PREMIER_ELEMENT_D_UN_FICHIER ,DERNIER_ELEMENT_D_UN_FICHIER ,I ) Bblock DEFV(Float,INIT(valeur_courante_1,ELEMENT_DU_FICHIER1(index))); DEFV(Float,INIT(valeur_courante_2,ELEMENT_DU_FICHIER2(index))); /* Recuperation des valeurs courantes dans le fichier. */ INCR(ecart_type_1,EXP2(SOUS(valeur_courante_1,moyenne_courante_1))); INCR(ecart_type_2,EXP2(SOUS(valeur_courante_2,moyenne_courante_1))); /* Calcul des ecart-types. */ Eblock EDoI EGAL(ecart_type_1,RACX(DIVI(ecart_type_1,nombre_d_elements_traites))); EGAL(ecart_type_2,RACX(DIVI(ecart_type_2,nombre_d_elements_traites))); /* Calcul des ecart-types (inutilises a la date de creation de ce programme...). */ DoIn(index ,PREMIER_ELEMENT_D_UN_FICHIER ,DERNIER_ELEMENT_D_UN_FICHIER ,I ) Bblock DEFV(Float,INIT(valeur_courante_1,ELEMENT_DU_FICHIER1(index))); DEFV(Float,INIT(valeur_courante_2,ELEMENT_DU_FICHIER2(index))); /* Recuperation des valeurs courantes dans le fichier. */ INCR(somme_des_produits_des_differences_aux_moyennes ,MUL2(SOUS(valeur_courante_1,moyenne_courante_1) ,SOUS(valeur_courante_2,moyenne_courante_2) ) ); INCR(somme_des_carres_des_differences_aux_moyennes_1 ,EXP2(SOUS(valeur_courante_1,moyenne_courante_1)) ); INCR(somme_des_carres_des_differences_aux_moyennes_2 ,EXP2(SOUS(valeur_courante_2,moyenne_courante_2)) ); Eblock EDoI EGAL(coefficient_de_correlation ,DIVZ(somme_des_produits_des_differences_aux_moyennes ,RACX(MUL2(somme_des_carres_des_differences_aux_moyennes_1 ,somme_des_carres_des_differences_aux_moyennes_2 ) ) ) ); EDITION_DANS_gOPERATION_SUR_LES_FICHIERS_AVEC_SAUT_DE_LIGNE(coefficient_de_correlation); /* On notera le cas particulier ou les deux fichiers sont identiques : */ /* */ /* coefficient_de_correlation = +1 */ /* */ /* et s'ils sont tres differents : */ /* */ /* coefficient_de_correlation = -1 */ /* */ /* Introduit sous cette forme le 20160804094626... */ Eblock end_nouveau_block lGENERATION_D_UN_FICHIER(liste2_des_valeurs,VALEUR_2_IMPLICITE); lGENERATION_D_UN_FICHIER(liste1_des_valeurs,VALEUR_1_IMPLICITE); RETU_Commande; Eblock ECommande