phascor method
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
) + reali
sin(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;
}
}