[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