Лабораторная работа №3
Моделирование ЭКГ сигнала
Цель: изучение модели ЭКГ сигнала на основе генерации эталона в виде суммы несимметричных гауссовых функций.
Введение
Вданной лабораторной работе предлагается реализовать базовую модель ЭКГ, приведенную в статье Т.Ю. Беклера «Моделирование искусственных электрокардиограмм нормальной и патологической формы» [1].
Воснову построения базовой математической модели генерации искусственной ЭКГ положено аналитическое решение одного из дифференциальных уравнений. Базовая модель формируется по эталону ( ), который описывается суммой несимметричных гауссовых функций:
|
|
|
( ) = |
∑ |
|
∙ exp [− |
( − )2 |
] (1) |
|
|
|
||||||||||
|
|
|
2[ ( )]2 |
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
{ , , , , , } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
При ограничениях: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
0 ≤ (1) < (2) |
≤ |
(1) < (2) |
= (1) < (2) |
= (1) |
< (1) |
= (1) |
≤ (2) ≤ |
(1) < (2) |
≤ |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|||
где 0— общая продолжительность (мс) |
( ), |
связанная |
с |
частотой |
FЧСС |
сердечных |
|||||||||||||||
сокращений (уд/мин) соотношением: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
= |
|
60 1000 |
, |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
0 |
|
|
ЧСС |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
(1) |
|
|
|
|
(2) |
|
|
|
|
|
|
|
|
|
|
|
||
а моменты |
начала |
и |
окончания |
|
|
каждого i |
-го фрагмента |
эталона, |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{ , , , , , }, |
связаны с параметрами |
(1) |
, (2) и |
|
следующим образом (поскольку |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
гауссова функция главным образом сосредоточена на «трехсигмовом» интервале, можно полагать так):
(1) = − 3(1),(2) = + 3(2).
Параметры и определяют значения амплитуд и моментов времени, когда i-й информативный фрагмент эталона, { , , , , , } , принимает максимальное значение при > 0 или минимальное значение при < 0 , а параметры
( ) = { (1) ≤(2) >
при (1) ≠ (2) позволяют генерировать несимметричные фрагменты.
Известно, что даже у здоровых людей в состоянии покоя сердечный ритм подвержен значительным колебаниям. Для моделирования этого явления на основе эталона на последовательных временных интервалах:
|
= |
(1 + ), |
= 1, … , |
0 |
0 |
|
|
формируется последовательность циклов Z1(t)...ZN(t) по формуле:
( ) = |
∑ |
∙ exp [− |
( − )2 |
] , = 1, … , (2) |
|
2[ ( )]2 |
|||||
|
|
|
|
||
|
{ , , , , , } |
|
|
|
|
|
|
|
|
||
|
|
1 |
|
|
Изменение продолжительностей RR-интервалов моделируется искажением частоты сердечных сокращений (временного интервала 0) на основе использования реализаций независимой случайной величины , которая с нулевым математическим ожиданием распределена на ограниченном интервале [−0, ], 0 – фиксированное число, определяющее требуемые границы искажения частоты.
На рис. 1вверху показана нормальная ЭКГ из записи № 16795 базы данных MIT-BIH Normal Sinus Rhythm Database, внизу - искусственно сгенерированная ЭКГ с параметрами, приведенными в таблице 1.
Рисунок 1 – Реальная (вверху) и искусственная (внизу) ЭКГ [1]
Таблица 1- Параметры искусственной ЭКГ
i |
|
|
(1) |
|
(2) |
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
||
P |
0,11 |
0,014 |
|
0,014 |
|
0,399 |
|
Q |
- 0,004 |
0,008 |
|
0,008 |
|
0,45 |
|
R |
1,453 |
0,008 |
|
0,008 |
|
0,474 |
|
S |
- 1,053 |
0,007 |
|
0,007 |
|
0,495 |
|
ST |
0,063 |
0,04 |
|
0,04 |
|
0,574 |
|
T |
0,52 |
0,056 |
|
0,024 |
|
0,7 |
|
Ход работы
1. Задайте структуру для описания параметров волн
struct WaveParams
name::String
A::Float64
b1::Float64
b2::Float64
mu::Float64
end
2. Добавьте в вектор all_waves все волны комплекса с параметрами, приведенными в таблице 1. Для добавления элементов в вектор используйте функцию
2
push!(). Самостоятельно ознакомьтесь с документацией на неё и изучите отличия от функции append!().
all_waves = Vector{WaveParams}()
push!(all_waves, WaveParams("P",0.11,0.014,0.014,0.399)) #
остальные волны добавьте самостоятельно
3. Моделирование будет происходить покомплексно. Чтобы «собрать» все комплексы воедино, инициализируйте пустой вектор.
ecg = Float64[] # пустой вектор, куда будет собран сигнал
4. Объявите функцию, которая осуществляет моделирование комплекса по параметром отдельных волн и с варьирующимся значением ЧСС (формула (2)).
function model_cmpx(all_waves::Vector{WaveParams}, t0m::Float64, Fs::Number)
time_grid = collect(0:1/Fs:t0m) # временная сетка out = fill(0.0,length(time_grid))
for point in all_waves
# числитель формулы для Z(t)
num = (time_grid .- point.mu).^2
# знаменатель считается в зависимости от mu
#так задается ассиметричность волны den = Float64[]
for t in time_grid if t<point.mu
push!(den, point.b1^2)
else
push!(den, point.b2^2)
end
end
#в соответствии с формулой (2) результаты суммируем
out .+= point.A*exp.(-num./den)
end
return out
end
3
6. Используя объявленную функцию, сгенерируем последовательность из нескольких комплексов.
Задайте параметры сигнала: частоту дискретизации (Fs), число комплексов (N), допуски на вариабельность по времени отдельного комплекса (V) и базовое время длительности одного комплекса (t0_sec).
Fs=500; T=1/Fs;
t0_sec = 1 # базовая длительность комплекса, в сек.
V = -0.2:0.01:0.2 # допуски на вариабельность ритма
N = 20 # число комплексов for m = 1:N
t0m = t0_sec*(1+rand(V))
out = model_cmpx(all_waves, t0m, Fs) append!(ecg,out)
end
7. Постройте график полученной синтетической ЭКГ.
plotly() # вызвать один раз перед построением графика-включит возможность масштабирования
plot(ecg, label="ecg")
8. Постройте график ЭКГ с депрессией ST (см. таб. 2). Проанализируйте, как соотносятся значения параметров и за счет чего удается смоделировать такую специфичную форму комплекса.
Таблица 2 - Параметры искусственной ЭКГ с депрессией ST
i |
|
|
(1) |
|
(2) |
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
||
P |
0,04 |
0,03 |
|
0,03 |
|
0,203 |
|
Q |
0 |
0,066 |
|
0,066 |
|
0,266 |
|
R |
0,64 |
0,016 |
|
0,026 |
|
0,296 |
|
S |
-0,1 |
0,03 |
|
0,03 |
|
0,4 |
|
ST |
-0,23 |
0,15 |
|
0,2 |
|
0,45 |
|
T |
0,06 |
0,1 |
|
0,08 |
|
0,7 |
|
9. По аналогии с варьирующимся значением длительности комплекса (t0), добавьте в модель варьирование по амплитуде зубцов в небольших пределах (внесите требуемые изменения в функцию model_cmpx()). Это позволит добиться более естественного сигнала.
Постройте график ЭКГ с варьирующейся амплитудой зубцов (какую из двух – на ваш выбор).
4
9. Добавьте к полученной синтетической ЭКГ дрейф изолинии и наводку в 50 Гц. Амплитуду помех и частоту дрейфа изолинии выберите самостоятельно так, чтобы получить более «естественный» сигнал.
11.Определите переменную t0 через частоту сердечных сокращений. Изучите, как меняется искусственная ЭКГ при варьировании частоты. Какие ошибки моделирования при этом могут возникать?
12.Приведите графики полученного сигнала в общем виде и в увеличенном масштабе. Оцените, насколько сильно искажаются зубцы ЭКГ.
13. Изучите статьи из списка используемой литературы, чтобы получить более полное представление о приведенной в работе модели.
Содержание отчета:
1.Титульный лист, описание цели работы. Основные теоретические положения.
2.Полный код программы с пояснениями на каждом из этапов.
3.Полученные графики. Анализ соответствия параметров модели и полученному сигналу.
Внимание! Графики должны иметь подписи и отметки по осям с таким шагом, чтобы было легко оценить длительность и амплитуду волн комплекса / время между комплексами.
4.Выводы по работе.
Используемая литература
1.Т.Ю. Беклер «Моделирование искусственных электрокардиограмм нормальной и патологической формы».
2.Л.С. Файнзильберг «Имитационные модели порождения искусственных электрокардиограмм в условиях внутренних и внешних возмущений».
Вопросы для самоконтроля:
1.Опишите модель формирования комплекса ЭКГ, приведенную в работе.
2.За счет чего достигается моделирование естественного непостоянства параметров комплекса?
3.Что такое гауссова функция? Какие у нее есть свойства и параметры?
4.Каким образом можно дополнить модель, включив в сигнал экстрасистолы и артефакты (см. [2])?
5.Какие помехи встречаются в электрокардиограмме и какими моделями можно описать самые распространенные из них?
5
