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

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


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



More information about the debian-med-commit mailing list