У меня есть ряд развернутых фаз, с некоторыми разворачиванием ошибок, которые состоят из скачка +/- кратного Pi:Крепежной развертка фазы ошибки в Numpy
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
Обратите внимание, что переменная не называется «прыгать сексистские», но «скачками существует» , Я возьму слова за 200. – Benjamin
В соответствии с вашими слабо выбранными именами переменных вы можете найти здесь функцию numpy 'cumsum'. Это кумулятивная сумма не ... неважно. – Hooked
На стороне примечание, разворачивание фазы при наличии шума - открытая исследовательская проблема ... Вы бы не работали над данными InSAR, не так ли? –