diff --git a/Delay.cpp b/Delay.cpp index fa0b4ea..eda70a6 100644 --- a/Delay.cpp +++ b/Delay.cpp @@ -23,8 +23,10 @@ void Hilbert::filter_block(const double* pIn, cmplx* pOut) const double* IKptr = IHilbertBPFirCoef+HILBPFIR_LENGTH-m_hilbert_ptr; const double* QKptr = QHilbertBPFirCoef+HILBPFIR_LENGTH-m_hilbert_ptr; cmplx acc{0., 0.}; - for (int j = 0; j < HILBPFIR_LENGTH; ++ j, ++ Firptr) - acc += (*Firptr) * (*IKptr++); + for (int j = 0; j < HILBPFIR_LENGTH; ++ j, ++ Firptr) { + acc.r += Firptr->r * (*IKptr++); // in-phase: band-pass (I) taps + acc.i += Firptr->i * (*QKptr++); // quadrature: Hilbert (Q) taps + } pOut[i] = acc; if (-- m_hilbert_ptr < 0) m_hilbert_ptr = HILBPFIR_LENGTH - 1;