[Numpy-discussion] phase unwrapping (1d)
Neal Becker
ndbecker2 at gmail.com
Fri Jan 11 10:40:39 EST 2013
np.unwrap was too slow, so I rolled by own (in c++).
I wanted to be able to handle the case of
unwrap (arg (x1) + arg (x2))
Here, phase can change by more than 2pi.
I came up with the following algorithm, any thoughts?
In the following, y is normally set to pi.
o points to output
i points to input
nint1 finds nearest integer
value_t prev_o = init;
for (; i != e; ++i, ++o) {
*o = cnt * 2 * y + *i;
value_t delta = *o - prev_o;
if (delta / y > 1 or delta / y < -1) {
int i = nint1<int> (delta / (2*y));
*o -= 2*y*i;
cnt -= i;
}
prev_o = *o;
}
More information about the NumPy-Discussion
mailing list