$$$$ RECOMPOS * RECOMPOS PROCEDUR PICA 92/07/03 21:34:22 619 *----------------------------------------------------------------------* * PROCEDURE RECOMPOS * * * * CALCUL DE LA RECOMPOSITION D'UN SIGNAL QUELCONQUE EN * * ONDELETTE ORTHOGONALE * * * * M ACC=RECOMPOS RESI DECO (OPTIO); * *----------------------------------------------------------------------* * ENTREE * * * * RESI : OBJET DE TYPE EVOLUTION CONTENANT LE RESIDU AU NIVEAU M * * * * DECO : OBJET DE TYPE EVOLUTION CONTENANT LA DECOMPOSITION EN M * * NIVEAUX, DES BASES VERS LES HAUTES FREQUENCES * * * * OPTIO : OBJET DE TYPE TABLE CONTENANT LES OPTION * *----------------------------------------------------------------------* * OPTIONS * * * * OPTIO.'LREC'= ENTIER, NOMBRE DE NIVEAU DE RECOMPOSITION SOUHAITE, * * DEFAUT PERMETTANT LE CALCUL MAXIMUM * * * * OPTIO.'FORC'= LOGIQUE, AUTORISATION POUR FORCER LES CALCUL AU DELA * * DES POSSIBILITES DE DECO ET SUIVANT LREC * * DEFAUT FAUX * * * * OPTIO.'BORD'= TEXTE, TRAITEMENT DES CONDITION DE BORD POUR LA * * CORRELATION: SYME(trique) OU PADD(ing) de ZERO * * DEFAUT SYME * * * * OPTIO.'TYPE'= TEXTE, TYPE D'ONDELETTE: MALL(at) ou DAUB(echie) * * DEFAUT MALL * * * * OPTIO.'TINI'= FLOTTANT BORNE INFERIEURE POUR LE SIGNAL RECONSTITUE * * DEFAUT RIEN * * * * OPTIO.'TFIN'= FLOTTANT BORNE SUPERIEURE POUR LE SIGNAL RECONSTITUE * * DEFAUT RIEN * *----------------------------------------------------------------------* * SORTIE * * * * M : ENTIER, NOMBRE DE NIVEAU ATTEINT * * * * ACC : OBJET DE TYPE EVOLUTION CONTENANT LE SIGNAL * *----------------------------------------------------------------------* 'DEBPROC' RECOMPOS RESI*'EVOLUTION' DECO*'EVOLUTION' OPTIO/'TABLE'; *----------------------------------------------------------------------* 'SI' ('NON' ('EXISTE' OPTIO)); LOPTION=FAUX; 'SINON'; LOPTION=VRAI; 'FINSI'; LREC=100; FORC=FAUX; BORD='TEXT' SYME; TYPE= 'TEXT' MALL; LTINI=FAUX;LTFIN=FAUX; 'SI' LOPTION; 'SI' ('EXISTE' OPTIO 'LREC'); LREC=OPTIO.'LREC'; 'SI' ('EXISTE' OPTIO 'FORC'); FORC= OPTIO.'FORC'; 'FINSI'; 'FINSI'; 'SI' ('EXISTE' OPTIO 'BORD'); BORD='TEXT' OPTIO.'BORD'; 'FINSI'; 'SI' ('EXISTE' OPTIO 'TYPE'); TYPE='TEXT' OPTIO.'TYPE'; 'FINSI'; 'SI' ('EXISTE' OPTIO 'TINI'); TINI=OPTIO.'TINI'; LTINI=VRAI; 'FINSI'; 'SI' ('EXISTE' OPTIO 'TFIN'); TFIN=OPTIO.'TFIN'; LTFIN=VRAI; 'FINSI'; 'FINSI'; LOK=VRAI; * * Filtre en h (MALLAT -erreur signe) * 'SI' ('EGA' TYPE ('TEXT' MALL)); HH='PROG' .542 .307 -.035 -.078 .023 .030 -.012 -.013 .006 .006 -.003 -.002; MMH= -1; HDIM='DIME' HH; GG='PROG'; I=HDIM; II=1; UU=(-1)**HDIM; 'REPETER' LABMALL HDIM; G='EXTRAIRE' HH I; GG='INSERER' GG II (UU*G); 'SI' (I 'NEG' 1);GG= 'INSERER' GG II (UU*G); 'FINSI'; I=I-1; II=II+1; UU=UU*(-1); 'FIN' LABMALL; GTILDE=GG; MMG=HDIM-2; 'SINON'; * * Filtre en h (Daubechie + correction norme) * 'SI' ('EGA' TYPE ('TEXT' DAUB)); HH='PROG' 0.077852054085 0.396539319482 0.729132090846 0.469782287405 -0.143906003929 -0.224036184994 0.071309219267 0.080612609151 -0.038029936935 -0.016574541631 0.012550998556 0.000429577973 -0.001801640704 0.000353713800; HH=HH / (2**.5); MMH=0; * * Calcul des filtres conjugues et en quadrature * HDIM='DIME' HH; GG='PROG'; I=HDIM; II=1; UU=(-1)**HDIM; 'REPETER' LABDAUB HDIM; G='EXTRAIRE' HH I; GG='INSERER' GG II (UU*G); I=I-1; II=II+1; UU=UU*(-1); 'FIN' LABDAUB; MMG=HDIM-2; * 'SINON'; 'MESS' 'RECOMPOS:Le type' TYPE 'd analyse n existe pas'; LOK=FAUX; 'FINSI'; 'FINSI'; * * Travail eventuel sur DECO * 'SI' LOK; DECOT=DECO; 'SI' FORC; NCOUR='DIMENSION' DECO; 'SI' (NCOUR '<' LREC); XXXX='EXTRAIRE' DECO 'ABSC' NCOUR; I=0; 'REPETER' LABD (LREC-NCOUR); I=I+1; XX ='DIADIQUE' XXXX 'IVIN'; XXXX=XX; DUMMY='EVOLUTION' 'MANUEL' 'temps' XX 'Y->0.' (0*XX); 'SI' (I 'EGA' 1); DECOC=DUMMY; 'SINON'; DECOC=DECOC 'ET' DUMMY; 'FINSI'; 'FIN' LABD; DECOT=DECO 'ET' DECOC; 'MESS' 'RECOMPOS:Ajout de' I 'niveaux nuls de complement'; 'FINSI'; 'FINSI'; * * Recomposition * M ACC=MULTIREC RESI DECOT HH MMH GG MMG BORD LREC; 'MESS' 'RECOMPOS:Nb de niveau de recomposition:' M; * 'SI' (LTINI 'OU' LTFIN); XXXX='EXTR' ACC 'ABSC' 1; TTINI='EXTR' XXXX 1; NNPTT='DIME' XXXX; TTFIN='EXTR' XXXX NNPTT; DXXXX=(TTFIN-TTINI)/(NNPTT-1); 'SI' LTINI; 'SI' (TINI 'EG' TTFIN); TFIN=TTFIN; 'MESS' 'RECOMPOS:TFIN est trop grand pour etre pris en compte'; 'SINON'; IFIN=(TTFIN-TFIN)/DXXXX; IFIN=IFIN-0.0001; IFIN='ENTIER' IFIN; IFIN=IFIN+1; TFIN=TTFIN-(IFIN*DXXXX); 'FINSI'; 'SINON'; TFIN=TTFIN; 'FINSI'; YYYY='EXTR' ACC 'ORDO' 1; XXX='PROG' TINI 'PAS' DXXXX TFIN; YYY='IPOL' XXX XXXX YYYY; ACC='EVOLUTION' 'MANUEL' 'temps' XXX 'Y' YYY; 'FINSI'; 'FINSI'; * 'FINPROC' M ACC;