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