[med-svn] [SCM] aghermann branch, master, updated. 06bda7dfaa687aaf0708a024d192024e2cd58421

Andrei Zavada johnhommer at gmail.com
Thu Jan 24 00:43:37 UTC 2013


The following commit has been merged in the master branch:
commit 6d1b1e8468fecec576d92947e057ef149b4abfae
Author: Andrei Zavada <johnhommer at gmail.com>
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



More information about the debian-med-commit mailing list