У меня есть ряд развернутых фаз с некоторыми ошибками развертывания, которые состоят из скачка +/- кратное Пи:
import numpy
a = numpy.array([0.5, 1.3, 2.4, 10.3, 10.8, 10.2, 7.6, 3.2, 2.9])
В этом примере есть первый скачок на 2 цикла между 2,4 и 10,3 и скачок на -1 цикл между 7,6 и 3,2. Я хочу убрать прыжки. Загвоздка в том, что когда вы удаляете скачок, вам нужно соответственно увеличивать или уменьшать остальную часть ряда, а не только значение, в котором происходит скачок.
Есть ли более чистый способ (без/меньше циклов, быстрее) сделать это:
jumpsexist = 1
while jumpsexist:
# Look for absolute differences greater than Pi
jump = numpy.abs((numpy.roll(a,-1) -a)) > numpy.pi
if jump[:-1].any():
# Find the index of the first jump
jumpind = numpy.argmax(jump) + 1
# Calculate the number of cycles in that jump
cycles = ((a[jumpind] - a[jumpind- 1]) / numpy.pi).astype("Int8")
# Remove the cycles
a[jumpind:] -= cycles * numpy.pi
else:
break