Глава 2: Разработка системы или модели
Рассмотрим подробнее модель на основе функций Гаусса (Модель Мак-Шери и Олкина), также известная как модель сглаженных псевдо-производных. Ключевая идея заключается в том, что характерная форма кардиоцикла с высокой точностью аппроксимируется суммой математических функций – производных от функции Гаусса.
В основу построения базовой математической модели генерации искусственной ЭКГ положено аналитическое решение одного из дифференциальных уравнений. Базовая модель формируется по эталону 𝑧(𝑡), который описывается суммой несимметричных гауссовых функций:
Где
–параметры, отражающие ширину гауссовой
волны,
– параметры, отражающие точку середины
(пик) волны,
– амплитуда волны, t
– время в секундах, при ограничениях:
0 ≤ 𝑡𝑃
(1)
< 𝑡𝑃
(2)
≤ 𝑡𝑄
(1)
< 𝑡𝑄
(2)
= 𝑡𝑅
(1)
< 𝑡𝑅
(2)
= 𝑡𝑆
(1)
< 𝑡𝑆
(1)
= 𝑡𝑆𝑇
(1)
≤ 𝑡𝑆𝑇
(2)
≤ 𝑡𝑇
(1)
< 𝑡𝑇
(2)
≤ 𝑡0
где 𝑡0—
общая продолжительность (мс) 𝑧(𝑡),
связанная с частотой FЧСС
сердечных сокращений (уд/мин) соотношением:
,
а моменты начала 𝑡𝑖 (1) и окончания 𝑡𝑖 (2) каждого i -го фрагмента эталона, 𝑖 ∈ {𝑃,𝑄, 𝑅, 𝑆, 𝑆𝑇, 𝑇}, связаны с параметрами 𝑏𝑖 (1), 𝑏𝑖 (2) и 𝜇𝑖 следующим образом:
Параметры 𝐴𝑖 и 𝜇𝑖 определяют значения амплитуд и моментов времени, когда i-й информативный фрагмент эталона, 𝑖 ∈ {𝑃, 𝑄, 𝑅, 𝑆, 𝑆𝑇, 𝑇}, принимает максимальное значение при 𝐴𝑖 > 0 или минимальное значение при 𝐴𝑖 < 0, а параметры
при 𝑏𝑖 (1) ≠ 𝑏𝑖 (2) позволяют генерировать несимметричные фрагменты.
Известно, что даже у здоровых людей в состоянии покоя сердечный ритм подвержен значительным колебаниям. Для моделирования этого явления на основе эталона на последовательных временных интервалах:
𝑡0𝑚 = 𝑡0 (1 + 𝛾𝑚), 𝑚 = 1, … , 𝑁
формируется последовательность циклов Z1(t)...ZN(t) по формуле:
Изменение продолжительностей RR-интервалов моделируется искажением частоты сердечных сокращений (временного интервала 𝑡0) на основе использования реализаций независимой случайной величины 𝛾𝑚, которая с нулевым математическим ожиданием распределена на ограниченном интервале 𝛾𝑚 ∈ [−𝛾0, 𝛾𝑚], 𝛾0 – фиксированное число, определяющее требуемые границы искажения частоты.
Для реализации модели ЭКГ был написан код на языке C++ и подобраны параметры гауссовых функций для моделирования нормального QRS комплекса, комплекса с депрессией ST-сегмента, а также комплекса при желудочковой экстрасистолии.
Основную роль в коде играет класс ECG, состоящий из подкласса Complex, отражающего структуру шаблона одного кардиоцикла, массива объектов класса Complex, содержащего набор различных параметров, используемых для генерации сигнала, а также методов добавления и удаления объектов класса Complex в набор данных и расчёта непосредственно сигнала ЭКГ в целом и каждого комплекса в отдельности. Рассмотрим их подробнее:
Каждый из подклассов Complex состоит из набора зубцов ЭКГ, представляющих собой структуры имеющие параметры, необходимые для расчёта гауссовой функции: name – имя зубца (P, Q, R и т.д.), А, b1, b2 и u соответственно.
Добавление и удаление объектов Complex в объект ECG осуществляется посредством функций push и del соответственно. Эти функции не представляют интереса с точки зрения расчёта, поэтому не будем заострять на них внимание.
Основной расчёт производится за счёт функции calculate, в которую передаются параметры: Fs – частота дискретизации, HR – частота сердечных сокращений, n – количество комплексов, которые необходимо сгенерировать, name – тип комплексов.
Если функция находит шаблон комплекса по названию, то создаёт вектор значений, который и является будущим сигналом. Функция проводит n итераций создания комплекса. В каждую итерацию производится копирование параметров шаблона комплекса и рандомизация параметров амплитуды, чтобы сделать каждый комплекс особенным. Далее производится расчёт конкретного комплекса за счёт функции do_ECG.
Внутри функции do_ECG на основе данных о частоте сердцебиения рассчитывается количество точек, которое будет занимать один кардиоцикл. Длина каждого кардиоцикла также рандомизирована, однако отклонение составляет не более 5% от идеальной длины. Сама же функция рассчитывает несимметричную гауссову функцию по переданным в неё параметрам, руководствуясь следующей логикой: для каждой точки в отдельности рассчитываются значения гауссовых функций, соответствующий данной точке во времени, относительно точка начала кардиоцикла. При этом, если tтекущ < u, то для рассчёта используется параметр b1, иначе параметр b2.
После всех расчётов в функцию calculate возвращается готовый вектор значений одного кардиоцикла, которые добавляются в конец вектора значений сигнала. После генерации всех кардиоциклов готовый вектор значений сигналов возвращается обратно в программу.
Далее, для упрощения работы с сигналом, он выводится в текстовый файл формата .txt. Этот формат удобен, так как читается большинством редакторов, мало весит и прост в обработке.
Для генерации различных типов комплексов вручную по форме сигналов из интернета были подобраны параметры, которые представлены в таблице 1:
Таблица 1 – Коэффициенты комплексов
Тип комплекса |
Зубец |
A |
b1 |
b2 |
u |
Нормальный |
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
Тип комплекса |
Зубец |
A |
b1 |
b2 |
u |
Депрессия ST сегмента |
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 |
|
Желудочковая экстрасистолия |
P |
0 |
0.03 |
0.03 |
0.08 |
Q |
0.3 |
0.01 |
0.03 |
0.1 |
|
R |
1.3 |
0.04 |
0.04 |
0.2 |
|
S |
-0.1 |
0.01 |
0.015 |
0.28 |
|
ST |
-0.18 |
0.1 |
0.1 |
0.34 |
|
T |
-0.19 |
0.04 |
0.04 |
0.39 |
