Download analyser.procedur

Back to the list

   1 : * ANALYSER  PROCEDUR  PICA      92/07/03    21:15:25     619            
   2 : *----------------------------------------------------------------------*
   3 : * PROCEDURE ANALYSER                                                   *
   4 : *                                                                      *
   5 : * CALCUL DE LA DECOMPOSITION D'UN SIGNAL QUELCONQUE EN                 *
   6 : * ONDELETTE ORTHOGONALE                                                *
   7 : *                                                                      *
   8 : * M DECO RESI=ANALYSER ACC (OPTIO);                                    *
   9 : *----------------------------------------------------------------------*
  10 : * ENTREE                                                               *
  11 : *                                                                      *
  12 : * ACC   : OBJET DE TYPE EVOLUTION CONTENANT LE SIGNAL                  *
  13 : *                                                                      *
  14 : * OPTIO : OBJET DE TYPE TABLE CONTENANT LES OPTION                     *
  15 : *----------------------------------------------------------------------*
  16 : * OPTIONS                                                              *
  17 : *                                                                      *
  18 : * OPTIO.'PUIS'= ENTIER, 2**PUISS+1=NB DE POINT D'ANALYSE,              *
  19 : *               DEFAUT ENGLOBANT TOUT LE SIGNAL COMPLETE PAR DES 0     *
  20 : *                                                                      *
  21 : * OPTIO.'LDEC'= ENTIER, NOMBRE DE NIVEAU DE DECOMPOSITION SOUHAITE,    *
  22 : *               DEFAUT PERMETTANT LE CALCUL MAXIMUM                    *
  23 : *                                                                      *
  24 : * OPTIO.'BORD'= TEXTE, TRAITEMENT DES CONDITION DE BORD POUR LA        *
  25 : *               CORRELATION: SYME(trique) OU PADD(ing) de ZERO         *
  26 : *               DEFAUT SYME                                            *
  27 : *                                                                      *
  28 : * OPTIO.'TYPE'= TEXTE, TYPE D'ONDELETTE: MALL(at) OU DAUB(echie)       *
  29 : *               DEFAUT MALL                                            *
  30 : *----------------------------------------------------------------------*
  31 : * SORTIE                                                               *
  32 : *                                                                      *
  33 : * M     : ENTIER, NOMBRE DE NIVEAU ATTEINT                             *
  34 : *                                                                      *
  35 : * DECO  : OBJET DE TYPE EVOLUTION CONTENANT LA DECOMPOSITION EN M      *
  36 : *         NIVEAUX, DES BASES VERS LES HAUTES FREQUENCES                *
  37 : *                                                                      *
  38 : * RESI  : OBJET DE TYPE EVOLUTION CONTENANT LE RESIDU AU NIVEAU M      *
  39 : *----------------------------------------------------------------------*
  40 : 'DEBPROC' ANALYSER ACC*'EVOLUTION' OPTIO/'TABLE';
  41 : *----------------------------------------------------------------------*
  42 : 'SI' ('NON' ('EXISTE' OPTIO));
  43 :   LOPTION=FAUX;
  44 : 'SINON';
  45 :   LOPTION=VRAI;
  46 : 'FINSI';
  47 : PUIS=0; LDEC=100; BORD='TEXT' SYME; TYPE= 'TEXT' MALL;
  48 : 'SI' LOPTION;
  49 :   'SI' ('EXISTE' OPTIO 'PUIS'); PUIS=OPTIO.'PUIS'; 'FINSI';
  50 :   'SI' ('EXISTE' OPTIO 'LDEC'); LDEC=OPTIO.'LDEC'; 'FINSI';
  51 :   'SI' ('EXISTE' OPTIO 'BORD'); BORD='TEXT' OPTIO.'BORD';
  52 :                                                      'FINSI';
  53 :   'SI' ('EXISTE' OPTIO 'TYPE'); TYPE='TEXT' OPTIO.'TYPE';
  54 :                                                      'FINSI';
  55 : 'FINSI';
  56 : *
  57 : * Test sur le signal
  58 : *
  59 : LOK=VRAI;
  60 : YY='COPIER' ('EXTR' ACC 'ORDO' 1);
  61 : XX='COPIER' ('EXTR' ACC 'ABSC' 1);
  62 : NPT='DIME' YY;
  63 : XXH='ENLE' XX 1;
  64 : XXB='ENLE' XX NPT;
  65 : XXDX=XXH-XXB; 
  66 : DXSUP='MAXI' XXDX; DXINF='MINI' XXDX;
  67 : PAS=('EXTR' 2 XX) - ('EXTR' 1 XX);
  68 : 'SI' ( (DXSUP - DXINF)/PAS '>' 1.E-5);
  69 :   'MESSAGE' 'ANALYSER: le pas de temps du signal n est pas constant';
  70 :   LOK=FAUX;
  71 : 'FINSI';
  72 : 'SI' LOK;
  73 : *
  74 : * Filtre en h (MALLAT -erreur signe)
  75 : *
  76 :   'SI' ('EGA' TYPE ('TEXT' MALL));
  77 :     HH='PROG' .542 .307 -.035 -.078 .023 .030 -.012 -.013 
  78 :               .006 .006 -.003 -.002;
  79 : *
  80 : * Calcul des filtres conjugues et en quadrature
  81 : *
  82 :     HTILDE=HH;
  83 :     MMHTILDE= -1;
  84 :     HDIM='DIMENSION' HH;
  85 :     GG='PROG'; I=HDIM; II=1;
  86 :     UU=(-1)**HDIM;
  87 :     'REPETER' LABMALL HDIM;
  88 :       G='EXTRAIRE' HH I;
  89 :       GG='INSERER' GG II (UU*G);
  90 :       'SI' (I 'NEG' 1);GG='INSERER' GG II (UU*G); 'FINSI';
  91 :       I=I-1; II=II+1; UU=UU*(-1);
  92 :     'FIN' LABMALL;
  93 :     MMG=HDIM-2;
  94 :     GDIM='DIME' GG;
  95 :     GTILDE=GG;
  96 :     MMGTILDE=GDIM-(MMG+1);
  97 : *
  98 :   'SINON';
  99 : *
 100 : * Filtre en h (Daubechie + correction norme)
 101 : *
 102 :     'SI' ('EGA' TYPE ('TEXT' DAUB));
 103 :        HH='PROG' 0.077852054085  0.396539319482  0.729132090846
 104 :                  0.469782287405 -0.143906003929 -0.224036184994
 105 :                  0.071309219267  0.080612609151 -0.038029936935
 106 :                 -0.016574541631  0.012550998556  0.000429577973
 107 :                 -0.001801640704  0.000353713800;
 108 :        HH=HH /  (2**.5);
 109 : *
 110 : * Calcul des filtres conjugues et en quadrature
 111 : *
 112 :        HDIM='DIME' HH;
 113 :        GTILDE='PROG'; HTILDE='PROG'; I=HDIM; II=1;
 114 :        UU=-1;
 115 :        'REPETER' LABDAUB HDIM;
 116 :          H='EXTRAIRE' HH I;
 117 :          HTILDE = 'INSERER' HTILDE II H;
 118 :          GTILDE = 'INSERER' GTILDE II UU;
 119 :           I=I-1; II=II+1; UU=UU*(-1);
 120 :        'FIN' LABDAUB;
 121 :        MMHTILDE=HDIM-1;
 122 :        GTILDE=GTILDE*HH; MMGTILDE=1;
 123 : *
 124 :     'SINON';
 125 :       'MESS' 'ANALYSER: le type' TYPE 'd analyse n existe pas';
 126 :       LOK=FAUX;
 127 :     'FINSI';
 128 :   'FINSI';
 129 : 'FINSI';
 130 : *
 131 : * modification du signal original : ajout de 0 avant et apres
 132 : * seule la procedure "automatique" respecte au mieu la decomposition en
 133 : * ondelette
 134 : *
 135 : 'SI' LOK;
 136 :   'SI' (PUIS 'EGA' 0);
 137 :      PUIS='ENTIER' ((('LOG' (NPT-1))/('LOG' 2))*0.9999); PUIS=PUIS+1;
 138 :   'FINSI';
 139 :   NPS=(2**PUIS) + 1;
 140 :   NPA=NPS-NPT;
 141 :   'SI' (NPA '>' 0);
 142 : *
 143 :     XDEP='EXTR' XX 1;
 144 :     IDEP='ENTIER' ((XDEP/PAS)*1.001);
 145 :     IPAM=NPA-IDEP+1;
 146 :     'SI' (IPAM '>' 1);
 147 :       PUIZ='ENTIER' ((('LOG' (IPAM-1))/('LOG' 2))*0.9999);
 148 :       IPAM=2**PUIZ+1;
 149 :       NPA=IPAM+IDEP-1;
 150 :     'SINON';
 151 :       NPA=NPA/2;
 152 :     'FINSI';
 153 : *
 154 :     'MESSAGE' 'ANALYSER: ajout de' NPA 'points nul en tete de signal';
 155 : *
 156 :     XDEP='EXTR' XX 1;
 157 :     XDEP=XDEP-(NPA*PAS);
 158 :     XXA=PROG XDEP 'PAS' PAS 'NPAS' (NPA-1);
 159 :     XXX=XX;XX=XXA 'ET' XX;
 160 :     YYA=PROG NPA*0.;
 161 :     YYY=YY;YY=YYA 'ET' YY;
 162 :     NPA=(NPS-NPT) - NPA;
 163 : *
 164 :     'SI' (NPA '>' 0);
 165 :       'MESSAGE' 
 166 :       'ANALYSER: ajout de' NPA 'points nul en queue de signal';
 167 : *
 168 :       XDEP=('EXTR' XX (NPS-NPA))+PAS;
 169 :       XXA=PROG XDEP 'PAS' PAS 'NPAS' (NPA-1);
 170 :       XXX=XX;XX=XX 'ET' XXA ;
 171 :       YYA=PROG NPA*0.;
 172 :       YYY=YY;YY=YY 'ET' YYA;
 173 :     'FINSI';
 174 :   'SINON'; 
 175 :     'SI' (NPA '<' 0);
 176 :       'MESSAGE' 'ANALYSER: analyse limitee a' NPS 'points';
 177 :       'MESSAGE' '          implementation non correcte';
 178 :     'FINSI';
 179 :   'FINSI';
 180 :   SIGNAL='EVOL' 'MANU' XX YY;
 181 : *
 182 : * Decomposition
 183 : *
 184 :   M DECO RESI=MULTIDEC SIGNAL HTILDE MMHTILDE 
 185 :                               GTILDE MMGTILDE BORD LDEC;
 186 :   'MESS' 'ANALYSER: nb de niveau d analyse:' M;
 187 : *
 188 : 'FINSI';
 189 : *
 190 : 'FINPROC' M DECO RESI;

© Cast3M 2003 - All rights reserved.
Disclaimer