The following commit has been merged in the master branch:
commit 7a61d7514555b9bc62adef53db5182fab058d120
Author: Andrei Zavada <[email protected]>
Date:   Sun Jan 20 03:14:13 2013 +0200

    fix and extend CPattern::find

diff --git a/src/sigproc/patterns.ii b/src/sigproc/patterns.ii
index fb3bb9b..2bb7ecd 100644
--- a/src/sigproc/patterns.ii
+++ b/src/sigproc/patterns.ii
@@ -19,8 +19,8 @@ extern template int CPattern<TFloat>::do_search( const 
valarray<TFloat>&, size_t
 template <typename T>
 int
 CPattern<T>::
-do_search( const valarray<T>& fenv_u,
-          const valarray<T>& fenv_l,
+do_search( const valarray<T>& fenv_l,
+          const valarray<T>& fenv_u,
           const valarray<T>& ftarget_freq,
           const valarray<T>& fdzcdf,
           size_t inc)
@@ -38,9 +38,11 @@ do_search( const valarray<T>& fenv_u,
        crit_dzcdf_unity =
                fdzcdf.sum() / fdzcdf.size();
 
-       printf( "field = %zu, thing = %zu(%zu), size_essential = %zu\n",
-               fsize, ptarget_freq.signal.size(),
-               penv.centre(SPatternPPack<T>::env_tightness).size(), 
size_essential());
+       // printf( "field = %zu, thing = %zu(%zu), size_essential = %zu\n"
+       //      "linear_unity %g; dzcdf_unity %g\n",
+       //      fsize, ptarget_freq.signal.size(),
+       //      penv.centre(SPatternPPack<T>::env_scope).size(), 
size_essential(),
+       //      crit_linear_unity, crit_dzcdf_unity);
 
        // here be all diffs
        diff.resize( fsize);
@@ -56,27 +58,20 @@ do_search( const valarray<T>& fenv_u,
                                     SPatternPPack<T>::dzcdf_sigma,
                                     SPatternPPack<T>::dzcdf_smooth);
 
+               T       d0 = 0., d1 = 0., d2 = 0., d3 = 0.;
                for ( size_t j = 0; j < essential_part; ++j ) {
-                       get<0>(diff[i]) += gsl_pow_2( p0[ctx_before + j]
-                                             - (fenv_u[i+j] + fenv_l[i+j])/2);
-                       get<1>(diff[i]) += gsl_pow_2( p1[ctx_before + j]
-                                             - (fenv_u[i+j] - fenv_l[i+j]));
-                       get<2>(diff[i]) += gsl_pow_2( p2[ctx_before + j]
-                                             - ftarget_freq[i+j]);
-                       get<3>(diff[i]) += gsl_pow_2( p3[ctx_before + j]
-                                             - fdzcdf[i+j]);
+                       d0 += gsl_pow_2( p0[ctx_before + j] - (fenv_u[i+j] + 
fenv_l[i+j])/2);
+                       d1 += gsl_pow_2( p1[ctx_before + j] - (fenv_u[i+j] - 
fenv_l[i+j]));
+                       d2 += gsl_pow_2( p2[ctx_before + j] - 
ftarget_freq[i+j]);
+                       d3 += gsl_pow_2( p3[ctx_before + j] - fdzcdf[i+j]);
                }
 
-               get<0>(diff[i]) = sqrt(get<0>(diff[i]) / essential_part) / 
crit_linear_unity; // normalise
-               get<1>(diff[i]) = sqrt(get<1>(diff[i]) / essential_part) / 
crit_linear_unity;
-               get<2>(diff[i]) = sqrt(get<2>(diff[i]) / essential_part) / 
crit_linear_unity;
-               get<3>(diff[i]) = sqrt(get<3>(diff[i]) / essential_part) / 
crit_dzcdf_unity;
+               get<0>(diff[i]) = sqrt(d0 / essential_part) / 
crit_linear_unity; // normalise
+               get<1>(diff[i]) = sqrt(d1 / essential_part) / crit_linear_unity;
+               get<2>(diff[i]) = sqrt(d2 / essential_part) / crit_linear_unity;
+               get<3>(diff[i]) = sqrt(d3 / essential_part) / crit_dzcdf_unity;
 
-               // if ( i % 250 == 0 ) printf( "at %zu diff_course = 
%g,\tdiff_breadth = %g\t diff_dzcdf = %g\n", i, diff_course, diff_breadth, 
diff_dzcd);
-               // if ( diff[i].good_enough(SPatternPPack<T>::criteria) )
-               //      match_indices.push_back(i);
-               // printf( " %17zu : %4g  %4g  %4g  %4g\n",
-               //      i, diff[0], diff[1], diff[2], diff[3]);
+               // if ( i % 25 == 0 ) printf( "at %zu d = [%g, %g, %g, 
%g]\ndiff = [%g, %g, %g, %g]\n", i, d0, d1, d2, d3, get<0>(diff[i]), 
get<1>(diff[i]), get<2>(diff[i]), get<3>(diff[i]));
        }
 
        return 0;
@@ -102,7 +97,7 @@ CPattern<T>::
 do_search( const valarray<T>& signal,
           size_t inc)
 {
-       valarray<T> fenv_u, fenv_l;
+       valarray<T> fenv_l, fenv_u;
        sigproc::envelope(
                {signal, samplerate}, SPatternPPack<T>::env_scope,
                1./samplerate, &fenv_u, &fenv_l);
@@ -120,7 +115,7 @@ do_search( const valarray<T>& signal,
                        SPatternPPack<T>::dzcdf_sigma,
                        SPatternPPack<T>::dzcdf_smooth);
 
-       return do_search( fenv_u, fenv_l, ftarget_freq, fdzcdf,
+       return do_search( fenv_l, fenv_u, ftarget_freq, fdzcdf,
                          inc);
 }
 

-- 
Sleep experiment manager

_______________________________________________
debian-med-commit mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-med-commit

Reply via email to