Why Is The Equation For General Memory Polynomial in the RFmx SpecAn Help Doc Does Not Match The Equation In The Original Paper?

Updated Jul 20, 2023

Reported In

Software

  • RFmx
  • RFmx SpecAn

Issue Details

The equation for General Memory Polynomial (GMP) in the RFmx SpecAn help doc does not match the equation in the original paper - one of summations should start at 0, not k.
  1. Looking at the mistake, it seems like something that may have just been a documentation error and not an actual difference from the original equation. Could someone verify that this is just a documentation bug and that we didn't actually implement the algorithm differently than the original GMP paper specifies it?
  2. Assuming it's just incorrect documentation, could a documentation bug be filed? I also notice that the order of the summations is not consistent. The paper lists the summation in K -> Q -> M order (they use L-1 instead of Q, but the equation is still the same), so it seems that we should do the same.

Solution

The equation in original paper in not causal. That is, output sample y[n] can be shown to be dependent on future input samples x[n+1], x[n+2] ... etc. 

Image


Consider k = 1, l = 0 and m = 1 in the highlighted summation above. The equation looks like:
y[n] = ... + c_{101} x[n] |x[n+1]| + ...

Output y[n] being a function of future input sample x[n+1] is physically impossible.  RFmx's implementation avoids this mistake and keeps the DPD system causal. This is why RFmx documentation indicates that sum over q starts from m in the last triple-sum.


Image


While the order of summation is immaterial, at-least for the sync and lag terms, the order sums shown in documentation are arranged to follow the order in which computed coefficients appear in the GMP coefficients result array fetched from RFmx DPD, and not really to match the original paper.  For the lead terms, causality constraint forces that sum over m be placed before sum over q, for q to go from m to Qc.