Интерполировать (предсказать) Недостающую последовательность NaN в колебательном сигнале на Python

#python #pandas #signal-processing #interpolation #data-recovery

Вопрос:

Я работаю с восстановлением потерянного сигнала, полученного с акселерометра. Во время получения данных некоторые его части иногда теряются, как правило, последовательность сигнала, а не изолированные значения, из-за характера передачи данных. На рисунке ниже показан пример потерянной последовательности данных.

Сигнал с последовательностью потерянных данных (47 позиций). X представляет номер индекса que, а Y-вибрационное ускорение в мг. Этот сигнал представляет собой белый шум, машина была выключена.

Я выполнил полиномиальную интерполяцию с порядком = 5, чтобы соответствовать сигналу, но в позициях последовательности NaN я получил следующий результат:

Сигнал из последовательности NaN интерполируется нормально, но метод на самом деле не «видит» последовательность, похоже, интерполируется только между 2 значениями (первым и последним).

Фрагмент кода для интерполяции:

 plt.plot(dados["Z"][8800:9000], color = 'blue', lw = 3)
interpol = dados.copy()
interpol['Z'].interpolate(method = 'polynomial', order = 5, inplace = True)
plt.plot(interpol['Z'][8800:9000], color = 'red')
 

Я хотел бы сопоставить весь сигнал с интерполированными данными, стремясь заменить ими последовательность NaN, восстановить сингнал и выполнить БПФ, но, таким образом, это не работает.

Знает ли кто-нибудь, как я мог бы заменить последовательность значений NaN интерполированными данными, чтобы восстановить структуру сигнала?

Заранее спасибо!