phascor method

void phascor (Float64List real, Float64List imag, double phc0 double phc1)

In-place phase correction (rotation in the complex plane) of the complex array with real part real and imaginary part imag according to realcori = reali*cos(ai) - imagi*sin(ai) imagcori = imagi*cos(ai) + realisin(ai) ai = phc0 + iphc1 The phase angles phc0, phc1 are to be specified in degrees.

Implementation

static void phascor(
    Float64List real, Float64List imag, double phc0, double phc1) {
  if (real.length != imag.length) {
    throw "real and imaginary spectrum have unequal sizes: " +
        "${real.length} / ${imag.length}";
  }

  double toRad = math.pi / 180;
  double curreal, curimag;
  double phinc = phc1 * toRad / (real.length - 1);
  double curph = phc0 * toRad;
  for (int i = 0; i < real.length; i++) {
    curreal = real[i];
    curimag = imag[i];
    real[i] = curreal * math.cos(curph) - curimag * math.sin(curph);
    imag[i] = curimag * math.cos(curph) + curreal * math.sin(curph);
    curph += phinc;
  }
}