The following commit has been merged in the master branch:
commit 6d1b1e8468fecec576d92947e057ef149b4abfae
Author: Andrei Zavada <[email protected]>
Date:   Fri Jan 11 01:57:59 2013 +0200

    recompute criterion linear unit for pattern search from field avg env 
breadth

diff --git a/src/sigproc/patterns.hh b/src/sigproc/patterns.hh
index 416f2d8..e3c88a1 100644
--- a/src/sigproc/patterns.hh
+++ b/src/sigproc/patterns.hh
@@ -104,13 +104,6 @@ class CPattern
                {
                        if ( ctx_before + ctx_after >= thing.signal.size() )
                                throw invalid_argument ("pattern.size too 
small");
-                       crit_linear_unity =
-                               penv(Pp_.env_tightness).first.max() -
-                               penv(Pp_.env_tightness).second.min();
-                       crit_dzcdf_unity =
-                               pdzcdf(Pp_.dzcdf_step,
-                                      Pp_.dzcdf_sigma,
-                                      Pp_.dzcdf_smooth).max();
                }
 
        size_t find( const SSignalRef<T>& field,
diff --git a/src/sigproc/patterns.ii b/src/sigproc/patterns.ii
index ee09dfc..d522954 100644
--- a/src/sigproc/patterns.ii
+++ b/src/sigproc/patterns.ii
@@ -38,6 +38,13 @@ find( const valarray<T>& fenv_u,
                return (size_t)-1;
        }
 
+       // make it (each time) field-specific
+       crit_linear_unity =
+               fenv_u.sum() / fenv_u.size() -
+               fenv_l.sum() / fenv_l.size();
+       crit_dzcdf_unity =
+               fdzcdf.sum() / fdzcdf.size();
+
        printf( "field = %zu, thing = %zu(%zu), start = %zu, size_essential = 
%zu\n",
                ftarget_freq.size(), ptarget_freq.signal.size(),
                penv.centre(SPatternPPack<T>::env_tightness).size(),  start, 
size_essential());
@@ -69,10 +76,10 @@ find( const valarray<T>& fenv_u,
                                              - fdzcdf[i+j]);
                }
 
-               diff[0] /= essential_part * crit_linear_unity; // normalise
-               diff[1] /= essential_part * crit_linear_unity;
-               diff[2] /= essential_part * crit_linear_unity;
-               diff[3] /= essential_part * crit_dzcdf_unity;
+               diff[0] = sqrt(diff[0] / essential_part) / crit_linear_unity; 
// normalise
+               diff[1] = sqrt(diff[1] / essential_part) / crit_linear_unity;
+               diff[2] = sqrt(diff[2] / essential_part) / crit_linear_unity;
+               diff[3] = sqrt(diff[3] / 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.good_enough(SPatternPPack<T>::criteria) ) {

-- 
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