Интерполировать сердечные сокращения по ЭКГ на основе временных меток r-пикPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Интерполировать сердечные сокращения по ЭКГ на основе временных меток r-пик

Сообщение Anonymous »

Я пытаюсь интерполировать сердечные сокращения из иногда зашумленного сигнала ЭКГ.
В этом документе обнаружено, что более точно интерполировать сердечные сокращения из зашумленного сигнала ЭКГ путем интерполяции по временной метке сокращения. , а не продолжительность такта. (Последнее дрейфует.)
Но я не знаю, сколько ударов сердца должно быть в шумных регионах, поэтому, если Y — это временная метка сердцебиения, я не знаю что передать как X.
Должен ли я создать массив с последней меткой времени сердцебиения для исходной выборки сигнала 256 Гц? X — индекс выборки, а Y — временная метка последнего сердечного ритма? Мое невежественное предположение состоит в том, что изменения в полках изменят кубический сплайн. Использовать взвешивание, чтобы при построении сплайна учитывать только известные временные метки? Я думаю, что это позволит построить график y=x. У меня нет другого выбора, кроме как использовать интервал?

Моя бессвязная работа...
Насколько я понимаю, это они интерполируют постоянно увеличивающуюся необработанную последовательность временных меток r-пика, а не колеблющийся интервал r-пика. Я предполагаю, что X - это индекс сердечного ритма 1, 2, 3, 4..., а Y - это индекс сигнала ЭКГ, который он появляется, скажем, 256, 500, 730... для сигнала ЭКГ ~ 60 ударов в минуту, 256 Гц. /p>
Я новичок в интерполяции и экспериментирую с функциями интерполяции SciPy CubicSpline или interpolate.splrep и splev.Или мой подход неправильный? Документы scipy рекомендуют np.ma для интерполяции отсутствующих значений, но я не могу понять, как бы это сделать.
Билет numpy предлагает UniVariateSpline с нулевыми узлами и нулевые веса, но если я передам ему массив с nan, spl вернет nan для всех значений. И в любом случае мне еще нужно знать, сколько ударов сердца пропущено.

Код: Выделить всё

y=[1, 4, np.nan, 16, 25, 36, 34, 12, 5, 87]
spl = UnivariateSpline(np.arange(10), y, s=0, w=np.zeros(10))
plt.plot(np.arange(10), spl(np.arange(10)))
>> array([nan, nan, nan, nan, nan, nan, nan, nan, nan, nan])
Мне удалось обнулить значения nans и веса для неизвестных:

Код: Выделить всё

spl = UnivariateSpline(
np.arange(10),
[1, 4, 0, 16, 25, 36, 34, 12, 5, 87],
w=[1, 1, 0,  1,  1,  1,  1,  1, 1,  1]
)
spl(np.arange(10))
>>> array([ 0.97665691,  4.18844333,  7.52957225, 14.64048455, 26.86293802,
36.34395811, 32.5930899 , 11.48427138,  6.42129891, 86.48885889])
Но я не знаю, сколько у меня нанов.
Нужно ли использовать интервалы при подсчете пульса? неизвестный? Интервалы с частотой выборки, затем X — индекс выборки, а Y — интервал?
Могу ли я сделать то же самое с отметкой времени сердцебиения? Самая последняя временная метка для каждой выборки и нулевой вес для зашумленных регионов? Это статистически достоверно?
Огромное спасибо за любые подсказки.

Подробнее здесь: https://stackoverflow.com/questions/791 ... timestamps
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»