! Procedure de moyenne ponderee : wmean.nic ! S'applique aux variables signal[ &3 : (&3+npts-1) , nch] et sigwei[id] ! a yy[npairs,nch] et ! a az[nrecord] ! a el[nrecord] ! &1 est la variable sur laquelle est faite la moyenne de dimension [&4,nch] ! &2 est la variable contenant les poids de dimension [&4,nch] ! &3 est l'indice de depart ! &4 est le nombre de donnees ! &5 est la moyenne estimee de dimension [nch] ! &6 est la deviation standard de dimension [nch] ! &7 est le nb de canaux considere peut etre egal a 1 ! ! Extraction des variables a moyenner define integer i1 npts ix nch let nch &7 let i1 &3 let npts &4 !exa npts ! Juste pour tracer le calcul de moyenne... !say "index depart=" 'i1' " Nombre de points=" 'npts' define real x[npts,nch] xwei[npts,nch] for k 1 to nch for i 1 to npts let ix i1-1+i let x[i,k] &1[ix,k] ! if &2[ix,k].lt.0 then ! say "Poids Negatif !" ! let npb npb+1 ! else let xwei[i,k] &2[ix,k] ! endif next next del/var i1 ix ! ! Calcul de la moyenne if npts.le.1 then say "Pas la peine de continuer..." let &5 &1[&3] let &6 0 else define real xmean[nch] xrms[nch] weisum[nch] for k 1 to nch for i 1 to npts let xmean[k] xmean[k]+xwei[i,k]*x[i,k] let weisum[k] weisum[k]+xwei[i,k] next if weisum[k].ne.0 then let xmean[k] xmean[k]|weisum[k] else say "Tous les poids sont nuls !" let xmean[k] 0 endif for i 1 to npts let xrms[k] xrms[k]+xwei[i,k]*(x[i,k]-xmean[k])**2 next if weisum[k].ne.0 then let xrms[k] sqrt(xrms[k]|((npts-1)*weisum[k])) else let xrms[k] 0 endif next let &5 xmean let &6 xrms del/var weisum xmean xrms endif del/var x xwei npts nch