Ignore:
Timestamp:
Sep 9, 2002, 5:33:16 PM (23 years ago)
Author:
aubourg
Message:

Vivien, limites processors et connect

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ArchTOIPipe/Processors/wienerdecor.cc

    r2127 r2187  
    1111  nsamples = n;
    1212  lcorr = l;
     13  doNotLookAt();
    1314}
    1415
     
    3536  double* y = new double[lcorr+1];  // corr vector
    3637  double* window = new double[lcorr];
     38  uint_8* fwind  = new uint_8[lcorr];
    3739  double* filter = new double[lcorr];
    3840  for (int i=0; i<lcorr; i++) filter[i]=0;
     
    4143  int snstartcorr = -1;
    4244 
    43   while (sn < sne) {
     45  while (sn <= sne) {
    4446    if (snstartcorr < 0 ||
    4547        (snstartcorr + nsamples < sn && sn+nsamples < sne)) {
     
    4850      corr.reset();
    4951      autocorr.reset();
    50       int i;
    51       for (i=sn; i<sn+nsamples; i++) {
    52         double sig = getData(0, i);
    53         double prb = getData(1, i);
     52      cout << "computing correl " << sn << " -> " << sn+nsamples << endl;
     53      for (int i=sn; i<sn+nsamples; i++) {
     54        uint_8 flag1, flag2;
     55        double sig, prb;
     56        getData(0, i, sig, flag1);
     57        if (flag1 & flgNotLookAt) continue;
     58        getData(1, i, prb, flag2);
     59        if (flag2 & flgNotLookAt) continue;
     60        if ((i-sn)%100 == 0) {
     61          //cout << " sig/prb : " << i << " : " << sig << " / " << prb
     62          //     << hex << " " << flag1 << " " << flag2 << dec << endl;
     63        }
    5464        corr.push(i, sig, prb);
    5565        autocorr.push(i, prb);
    5666      }
    5767      // correlation is recomputed, let's recompute the wiener filter from wiener equations
    58       for (i=0; i<lcorr; i++) {
     68      {for (int i=0; i<lcorr; i++) {
    5969        r[lcorr+i] = r[lcorr-i] = autocorr.correl(i);
    6070        y[i+1] = corr.correl(i);
    61       }
     71        //cout << "r " << lcorr+i << " " << lcorr -i << " = " << r[lcorr+i]
     72        //    << "\n"
     73        //    << "y " << i+1 << " = " << y[i+1] << endl;
     74      }}
    6275      dtoeplz(r,w,y,lcorr);
    6376      if (!isnan(w[1])) {
     
    6982      }
    7083      cout << "Wiener filter : " << sn << "\n ";
    71       for (i=0; i<lcorr; i++) {
     84      {for (int i=0; i<lcorr; i++) {
    7285        cout << filter[i] << " ";
    73       }
     86      }}
    7487     cout << endl;
    7588    }
    7689
    7790    if (sn >= snb+lcorr-1) {
    78       getData(1, sn-lcorr+1, lcorr, window);
     91      getData(1, sn-lcorr+1, lcorr, window, fwind);
     92      uint_8 flag = 0;
    7993      double outSig = 0;
    8094      for (int i=0; i<lcorr; i++) {
    8195        outSig += filter[i] * window[lcorr-1 - i];
     96        flag |= fwind[lcorr-1 -i];
    8297      }
    83       putData(0, sn, getData(0, sn) - outSig);
    84       putData(1, sn, outSig);
     98      putData(0, sn, getData(0, sn) - outSig, flag);
     99      putData(1, sn, outSig, flag);
    85100    }
    86101    sn++;
Note: See TracChangeset for help on using the changeset viewer.