7 unfold(
const std::vector<uint8_t>&
q,
const float x) {
10 #define STATS(value) ( (value<254) ? stats_t<float>(value) : saturated )
12 const unsigned N=q.size();
14 Q[0] = Q[N+1] = suppressed;
17 Q[1] =
STATS(q[0])/(1-2*
x);
22 Q[1] = ( A*q0 -x*
q1 ) / (A*A-x*x);
23 Q[2] = ( A*q1 -x*
q0 ) / (A*A-x*x);
27 for(
unsigned i=0;
i<(N+1)/2;
i++) {
28 for(
unsigned j=
i;
j<N-
i;
j++) {
29 const float Cij = inverse(i+1,
j+1);
30 Q[i+1] += Cij *
STATS(q[
j ]) ;
if( i!=j)
31 Q[j+1] += Cij *
STATS(q[ i ]) ;
if( N!=i+j+1) {
32 Q[N-
i] += Cij *
STATS(q[N-j-1]) ;
if( i!=j)
33 Q[N-
j] += Cij *
STATS(q[N-i-1]) ;
46 lambdaP( 1+(1+sq)/(-x*2) ),
47 lambdaM( 1+(1-sq)/(-x*2) ),
float operator()(const unsigned i, const unsigned j) const
InverseCrosstalkMatrix(const unsigned N, const float x)
float element(const unsigned, const unsigned) const
Power< A, B >::type pow(const A &a, const B &b)
static std::vector< stats_t< float > > unfold(const std::vector< uint8_t > &q, const float x)