Вы находитесь на странице: 1из 133

Айгеноскопия временных рядов и сигналов º № 4

ВЛАДИМИРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ


имени
Александра Григорьевича и Николая Григорьевича Столетовых

ООО «БизнесСофтСервис»
businesssoftservice@gmail.com ООО «Собственный вектор»
eigenoscope@yandex.ru

В.В. Исакевич, Д.В. Исакевич

КАРДИОАЙГЕНОСКОП:

Демонстрационная версия на Scilab

МОСКВА

1
УДК 616-71
ББК 654.10
И 85

Исакевич Валерий Викторович,


Исакевич Даниил Валерьевич
И 85 Кардиоайгеноскоп: Демонстрационная версия на Scilab. – М. Издательство Перо,
2016. – 133 с. [Электронное издание]

ISBN 978-5-906851-75-8

Книга посвящена новому методу обработки ЭКГ, реализующему патент на полезную


модель №128470 «Кардиоайгеноскоп». В основе метода лежит представление ЭКГ в адаптивных
базисах собственных векторов. Этот метод может быть значимым дополнением к существующим
методам, используемым при дешифрировании и при хранении больших массивов ЭКГ.
В книге описана демонстрационная версия кардиоайгеноскопа, выполненная на
программном обеспечении Scilab. Читатель сможет развернуть эту версию на своем
персональном компьютере и ознакомиться с методом кардиоайгеноскопии на общеизвестных
базах ЭКГ.
Работа выполнена при финансовой поддержке государственного задания № 2014/14,2871 и
гранта РФФИ № 14-07-97510/14.

УДК 616-71
ББК 654.10

ISBN 978-5-906851-75-8 © Исакевич В. В., Исакевич Д. В.,2016

2
При создании самостоятельного электронного издания использованы:
– OpenOffice.org Writer,
– OpenOffice.org Math,
– OpenOffice.org Calc,
– CeCILL Scilab.

Техническая подготовка материалов:


В.В. Исакевич, Д.В. Исакевич.

Редактирование текстовых материалов:


Ю.В. Сименидо.

Дата подписания к использованию:


16 февраля 2016 г.

Объем издания: 527 Мб (файл, папки).

Комплектность: 1 СD:
Кардиоайгеноскоп2016.pdf (файл)
Папка Сценарии и модули Scilab (файлы):
«demokard» Akrdm.sce; SciKVANT.sci; SciFR.sci; SciAnsambl.sci; Interior01q.sci;
Interior01qA.sci; Interior01qC.sci; Interior01qC2.sci;
Interior01qS.sci;`Interior02q.sci; Interior02qA.sci; Interior02qC.sci;
Interior02qC2.sci; Interior02qS.sci; Interior04q.sci; Interior05q.sci;
Interior06q.sci; Interior07q.sci; Interior08q.sci; Interior09q.sci; Interior10q.sci;
Interior11q.sci; Interior12q.sci; Interior13q.sci; Interior14q.sci; Interior15q.sci;
Interior16q.sci; Interior19q.sci; Interior20q.sci; Interior21q.sci; Interior22q.sci;
Interior23q.sci; SciSkl.sci; SciJust.sci; SciQRSsum.sci; SciAlpha.sci;
SciPQRST.sci; SciMxtr.sci; SciLinTrendElim.sci; KPDE1.sci; SciStat.sci;
SciXTEVStatistic.sci; SciEVbearer.sci; SciKern.sci; SciMaxAbs.sci;
SciSwartz.sci; SciNum2Name.sci; SciSinhroValid.sci;
Папка «Данные»: 60 файлов с расширением txt, сгруппированные в восемь
папок (по диагнозам). Цифровое имя файла совпадает с номером пациента
из базы данных [4].
Папка scilab-5.4.1.exe; scilab-help-chm-5.4.1.zip
«Scilab»

Запись на CD:
ООО «БизнесСофтСервис»,
Россия, 600005, г. Владимир, ул. Горького, д. 50,
тел. 8(4922) 32 — 67 – 21 ,
e-mail: businesssoftservice@gmail.com

3
Оглавление
Предисловие........................................................................................................................................7
Введение..............................................................................................................................................8
Описание демонстрационной версии.............................................................................................21
Как развернуть Scilab на персональном компьютере?.............................................................22
Подготовка данных......................................................................................................................22
Разворачивание демонстрационной версии на компьютере пользователя.............................23
Запуск демонстрационной версии кардиоайгеноскопа............................................................26
Визуализация результатов кардиоайгеноскопии.......................................................................32
Режим «Типичные представители СА (СВ № 1) во ФО (1/0)» ..........................................32
Режим «Типичные представители СА (СВ № 1) в ГО (1/0)» .............................................32
Режим «Типичные представители АМА (СВ № 2) во ФО (1/0)» ......................................33
Режим «Типичные представители АМА (СВ № 2) в ГО (1/0)» .........................................33
Режим «Первая компонента во ФО (1/0)» ............................................................................34
Режим «Первая компонента в ГО (1/0)» ..............................................................................35
Режим «Вторая компонента во ФО (1/0)» ............................................................................35
Режим «Вторая компонента в ГО (1/0)» ...............................................................................36
Режим «СК микроальтернаций во ФО (1/0)» ......................................................................36
Режим «СК микроальтернаций в ГО (1/0)» .........................................................................37
Режим «Отведения II, III, V1, V6 (1/0)» ...............................................................................37
Режим «Отведения I, II, III, avr, avl, avf (1/0)» ....................................................................38
Режим «Все отведения (1/0)» ................................................................................................38
Режим «Отведения I, II, III (1/0)» .........................................................................................39
Режим «Отведения avl, V5, V6 (1/0)» ...................................................................................39
Режим «Отведения avf, II, III (1/0)» ......................................................................................40
Режим «Отведения I, II, avf, V4, V5, V6 (1/0)» ....................................................................40
Режим «Отведение II (1/0)» ...................................................................................................41
Режим «Восстановление ЭКГ во ФО (1/0)» ........................................................................42
Режим «Восстановление ЭКГ в ГО (1/0)» ...........................................................................43
Режим «Восстановление ЭКГ в II (1/0)» ..............................................................................44
Режим «Восстановление ЭКГ в II, III, avf (1/0)» .................................................................44
Режим «Восстановление ЭКГ в V1, V2, V5, V6 (1/0)» .......................................................45
Режим «Статистики 1-ой и 2-ой компонент (1/0)» ..............................................................46
Режим « Статистики 1-ой и 3-ей компонент (1/0)» .............................................................47
Режим « Статистики 1-ой и 4-ой компонент (1/0)» .............................................................47
Режим « Наиболее вероятный PQRST (1/0)» .......................................................................48
Режим « 4 компоненты и ЭСА» ............................................................................................50
Режим « Статистики угла между ТП и ЭСА» ......................................................................51
Литература.........................................................................................................................................53
Вместо послесловия.........................................................................................................................54
Приложение 1. Лицензионное соглашение....................................................................................55
Приложение 2. Демонстрационная версия кардиоайгеноскопа на Scilab v.1.............................57
Кейсы, модули; их взаимосвязи и назначение..........................................................................57
Переменные запускающего сценария программы, доступные из рабочей области..............59
Пояснение взаимосвязи кейсов и экранных форм программы...............................................61
Запускающий сценарий Akrdm.sce.............................................................................................67
SciKVANT.sci................................................................................................................................76
SciFR.sci........................................................................................................................................76
SciSinhroValid.sci..........................................................................................................................77

4
SciAnsambl.sci..............................................................................................................................77
Interior01q.sci................................................................................................................................77
Interior01qA.sci.............................................................................................................................78
Interior01qC.sci.............................................................................................................................79
Interior01qC2.sci...........................................................................................................................81
Interior01qS.sci..............................................................................................................................82
Interior02q.sci................................................................................................................................83
Interior02qA.sci.............................................................................................................................84
Interior02qC.sci.............................................................................................................................85
Interior02qC2.sci...........................................................................................................................86
Interior02qS.sci..............................................................................................................................88
Interior04q.sci................................................................................................................................89
Interior05q.sci................................................................................................................................90
Interior06q.sci................................................................................................................................91
Interior07q.sci................................................................................................................................92
Interior08q.sci................................................................................................................................93
Interior09q.sci................................................................................................................................94
Interior10q.sci................................................................................................................................94
Interior11q.sci................................................................................................................................95
Interior12q.sci................................................................................................................................96
Interior13q.sci................................................................................................................................97
Interior14q.sci................................................................................................................................97
Interior15q.sci................................................................................................................................98
Interior16q.sci................................................................................................................................98
Interior19q.sci................................................................................................................................99
Interior20q.sci..............................................................................................................................100
Interior21q.sci..............................................................................................................................101
Interior22q.sci..............................................................................................................................103
Interior23q.sci..............................................................................................................................104
SciSkl.sci......................................................................................................................................106
SciJust.sci.....................................................................................................................................107
SciMxtr.sci...................................................................................................................................107
SciLinTrendElim.sci....................................................................................................................109
KPDE1.sci....................................................................................................................................110
SciStat.sci.....................................................................................................................................110
SciXTEVStatistic.sci...................................................................................................................110
SciEVbearer.sci............................................................................................................................111
SciKern.sci...................................................................................................................................111
SciMaxAbs.sci.............................................................................................................................111
SciQRSsum.sci.............................................................................................................................112
SciAlpha.sci.................................................................................................................................112
Bro2.sce.......................................................................................................................................113
SciSwartz.sci................................................................................................................................114
SciNum2Name.sci.......................................................................................................................114
Bro4.sce.......................................................................................................................................114
Приложение 3. Ядерные оценки плотности вероятностей.........................................................116
Приложение 4. Рекомендации по изменению открытого кода в случае изменения набора
отведений.........................................................................................................................................120
Приложение 5. Глоссарий..............................................................................................................121
Ансамбль микроальтернаций (АМА).......................................................................................121

5
Качество синхронизации...........................................................................................................121
Ковариационная матрица (КМ)................................................................................................121
Компонента ЭСА (КЭСА).........................................................................................................121
Конечный интервал анализа (КИА).........................................................................................121
Микроальтернация ЭСА (МА)..................................................................................................121
Нормированный вектор (НВ)....................................................................................................121
Нормированный спектр СЗ (НССЗ).........................................................................................121
Носитель.....................................................................................................................................121
Ортонормированный базис (ОНБ)...........................................................................................122
Проекция ЭСА на СВ ...............................................................................................................122
Синхронизирующее отведение ЭКГ (СО)...............................................................................122
Синхронный ансамбль (СА). Элемент СА (ЭСА)...................................................................122
Собственное значение (СЗ). Спектр собственных значений (ССЗ)......................................122
Собственный вектор (СВ).........................................................................................................122
Способ синхронизации (СС).....................................................................................................122
Типичная микроальтернация (ТМА)........................................................................................122
Типичный представитель (ТП).................................................................................................122
Характерная точка КЭСА..........................................................................................................123
Приложение 6. Первые компоненты во фронтальных и грудных отведениях для ЭКГ из [4]124
Аритмический синдром.............................................................................................................124
Рис. П6.1. Пациент № 109....................................................................................................124
Рис. П6.2. Пациент № 147....................................................................................................125
Рис. П6.3. Пациент № 153....................................................................................................126
Рис. П6.4. Пациент № 157....................................................................................................127
Рис. П6.5. Пациент № 177....................................................................................................128
Рис. П6.6. Пациент № 187....................................................................................................129
Рис. П6.7. Пациент № 218....................................................................................................130
Рис. П6.8. Пациент № 258....................................................................................................131
Рис. П6.9. Пациент № 286....................................................................................................132

6
Предисловие
Имея за плечами мощные научно-технические заделы наших — без
преувеличения — великих предшественников1, мы просто обязаны время от
времени заниматься «переупаковкой» сделанного ими — в соответствии с
новыми задачами и открывшимися возможностями цифрового века. Такой
переупаковкой — с целью получения новых технических результатов, их
патентной защиты и дальнейшего продвижения на рынок — и занимаются
ООО «БизнесСофтСервис» и ООО «Собственный вектор». Это их миссия.
Предлагаемая работа знакомит читателя с кардиоайгеноскопом — одной
из разработок специалистов ООО «БизнесСофтСервис» (патент РФ № 128470
«Кардиоайгеноскоп» - [1]), принципы работы которого достаточно подробно
изложены и обоснованы в монографии [2].
В отличие от [2], изучение предлагаемой работы не требует специальных
математических знаний. Цель авторов проста: показать — без углубления в
математику — как работает кардиоайгеноскоп, дать читателю — для
ознакомления — полнофункциональную демонстрационную версию, а
магистрантам и аспирантам соответствующих специальностей — открытый
код кардиоайгеноскопа — для дальнейшего совершенствования и
самостоятельных научных исследований.
Демонстрационная версия реализована на свободно распространяемом
программном обеспечении Scilab, может быть развернута читателем на своем
персональном компьютере и может быть использована в рамках лицензионного
соглашения, приведенного в приложении 1.

1 Советские вузовские учебники по обработке сигналов, по которым учились выпускники школ 60-х и 70-х
годов прошлого века, были (как мы теперь знаем) написаны разработчиками отечественных систем ПВО; эти
системы и сейчас верно служат стране.

7
Введение
В последние годы в задаче анализа электрокардиограмм все более
распространяются методы анализа PQRST-циклов, когда все PQRST-циклы
исходной кардиограммы преобразуются в матрицу циклов (матрицу
синхронного ансамбля (СА)) так, что положение отсчетов, соответствующих
максимумам R-зубцов в каждой строке матрицы, становится фиксированным.
Такой подход позволяет раздельно анализировать свойства PQRST-цикла и
последовательности R-R интервалов.
Известен метод обработки ЭКГ, при котором анализ приготовленного из
ЭКГ синхронного анасамбля сводится к вычислению среднего по ансамблю
PQRST-цикла и функции среднего квадратического отклонения (СКО)
элементов СА от такого среднего. Это метод дисперсионного картирования (ДК)
[3].
В кардиоайгеноскопе (упрощенная структурная схема приведена
на рис. 1) — также как и в методе ДК — используется синхронный ансамбль.
Но это единственный общий признак, объединяющий эти два подхода.
В кардиоайгеноскопе для представления элементов СА используются так
называемые собственные векторы — изобретенные в начале ХХ века великим
математиком Давидом Гильбертом2 и с тех пор неразрывно связанные с
решением многих задач физики, обработки сигналов и управления.
Использование собственных векторов — и это можно доказать
математически — требует минимального числа компонент для представления
(без потери информации) элементов СА. Именно поэтому кардиоайгеноскоп
реализует максимально возможную точность представления элементов
синхронного ансамбля при заданном числе независимых друг от друга
компонент.

2 В знак признательности мы поместили над заглавием этой книги шляпу Гильберта с его известного
фотопортрета. Она будет напоминать читателю о том, что основная идея, используемая в кардиоайгеноскопе
и в других айгеноскопах, родилась под шляпой, образ владельца которой мы бережно и благодарно храним.

8
Рис. 1. Схема, поясняющая принцип работы кардиоайгеноскопа:
1 — формирователь синхронного ансамбля (СА),
2 — вычислитель собственных векторов (СВ) и собственных значений (СЗ),
3 — блок хранения и анализа,
ЭКГ — электрокардиограмма, R-R – последовательность интервалов между соседними
R-зубцами ЭКГ, СВ — собственные векторы, СЗ — собственные значения.

Использование собственных векторов позволяет представить любой


элемент СА (ЭСА) в виде суммы немногих составляющих, причем каждая из
таких составляющих обладает уникальными свойствами.
Первый собственный вектор является типичным представителем СА; его
форма наиболее близка к форме всех элементов СА (сравните рис. 2 и рис. 4а)).
Второй собственный вектор представляет собой типичную
микроальтернацию (ТМА), его форма наилучшим образом описывает
отклонения элементов СА от формы, задаваемой первым собственным вектором
(типичным представителем) — пример на рис. 4б).
Третий собственный вектор наилучшим образом описывает ту
составляющую элемента каждого СА, которую не удается описать первыми
двумя (пример — рис. 4в)), и т.д.
На рис. 3 показано, как зависит ошибка представления элементов СА,
показанного на рис. 2, от числа использованных компонент. Сравнивались
представление с помощью собственных векторов и представление с помощью

9
а). Собственный вектор № 1
(в среднем 90.8 % энергии ЭСА)

Рис. 2. Синхронный ансамбль


(пациент № 286 из [4], II отведение ).

б). Собственный вектор № 2


(в среднем 6.07 % энергии ЭСА)

в). Собственный вектор № 3


(в среднем 1.62 % энергии ЭСА)
а).

г). Собственный вектор № 4


(в среднем 0.36 % энергии ЭСА)

Рис. 4. Первые четыре собственных вектора


для СА, представленного на рис. 3.
б).

Рис. 3. Зависимость ошибки представления


СА (в %) от числа компонент:
а) — для диапазона точности 100 %,
б) — для диапазона точности 10% .

10
ряда Фурье. Чтобы ошибка представления была меньше 1 %, как видно из рис.
3, достаточно четырех собственных векторов (кардиоайгеноскоп), а при
использовании ряда Фурье — не менее двадцати гармонических компонент.
Почему такое большое различие? Потому, что ряд Фурье, возникший при
решении простейших задач математической физики, великолепно работает при
решении именно этих простейших задач и с трудом справляется с ситуациями, к
которым он изначально не был приспособлен. А собственные векторы
максимально приспособлены для описания конкретной реальности, задаваемой
конкретным СА.
Человеческое восприятие устроено так, что оно с трудом удерживает
одновременно более пяти объектов. Совершенно ясно, что приспособленный к
эффективной диагностике способ представления PQRST-цикла должен
опираться на небольшое число компонент, которые несут в себе максимум
информации — и без потерь. Именно такую возможность и предоставляет
кардиоайгеноскоп. Его использование открывает новые возможности уже при
использовании только двух первых компонент, первая из которых несет
информацию о типичном элементе СА, а вторая — о типичных
микроальтернациях СА.
Собственные векторы, вычисляемые в блоке 2 структурной схемы,
представленной на рис. 1, обладают свойствами ортонормированности.
Поясним это понятие. Ортонормированность — математическое понятие,
обобщающее привычное геометрическое свойство перпендикулярности
(ортогональности) на более сложные математические объекты - «многомерные
векторы».
В привычном трехмерном пространстве любой вектор можно разложить в
сумму векторов, идущих вдоль единичных векторов привычной декартовой3
3 Процитируем известного современного геометра [6]: “Система координат, которая сейчас носит название
декартовой, объединила алгебру и геометрию. В узком смысле Декарт показал, что, построив три оси (x, y и
z), перпендикулярные друг к другу и пересекающиеся в одной точке, можно точно указать положение любой
точки в трехмерном пространстве, используя три числа: x, y и z, называемые координатами. Но на самом
деле вклад Декарта гораздо шире — одним блестящим жестом он значительно расширил область
исследования геометрии. Применение системы координат сделало возможным использование

11
системы координат. Каждая из таких декартовыв систем координат задается
тремя перпендикулярными друг к другу векторами единичной длины (ортами).
В трехмерном пространстве можно задать бесконечное число декартовых
систем координат, причем орты одной системы координат могут быть
выражены через орты другой.
Из школьного курса известно, что для того, чтобы вычислить величину
координаты (проекцию4) какого-либо вектора на некоторый единичный вектор,
достаточно вычислить скалярное произведение между этими векторами.
Следовательно, для двух ортов ортонормированной системы координат
(математики называют такую систему координат также ортонормированным
базисом или сокращенно — ОНБ5) скалярное произведение разных ортов
(проекции ортов друг на друга) равно нулю, а скалярное произведение
(проекция) орта на себя равно единице.
Математики обобщили понятие вектора. Вектором в современной
математике [9] считается любая упорядоченная последовательность из M
чисел; такой вектор считается принадлежащим к M - мерному пространству.
В таком пространстве (также как и в трехмерном) существуют орты — взаимно
ортогональные (перпендикулярные) векторы единичной длины. В таком
M -мерном пространстве нельзя построить больше M взаимно

ортогональных векторов (хотя, как и в трехмерном случае, число таких взаимно


ортогональных наборов, состоящих из M взаимно ортогональных векторов,
может быть бесконечным). И так же как в простейшем, привычном трехмерном
случае проекция на какой-либо вектор единичной длины вычисляется с
помощью скалярного произведения6.
алгебраических уравнений для описания сложных многомерных геометрических фигур, которые нелегко
себе представить. Используя этот подход, можно работать с пространствами любой размерности — не
обязательно (x, y и z), но и (a, b, c, d, e, f) или (j, k, l, m. n, o, p, q, r, s) — размерность каждого конкретного
пространства определяется числом координат, необходимых для того, чтобы указать положение точки в этом
пространстве. Вооружившись такой системой, можно рассматривать пространства любой размерности и
проводить в них различные вычисления, не заботясь о том, как эти пространства изобразить”.
4 Далее мы будем использовать слова «координата» и «проекция» как синонимы.
5 Термином ОНБ математики называют любую систему ортогональных друг к другу векторов, число которых
совпадает с размерностью пространства, каждый из которых имеет единичную длину [9].
6 Напомним, что скалярное произведение двух векторов равно сумме произведений из одноименных

12
Для дальнейшего изложения важно, что любой элемент синхронного
ансамбля, заданный на конечном интервале анализа (КИА) и представленный
своими M цифровыми значениями (отсчетами), представляет собой вектор
M -мерного векторного пространства. Это означает, что он может быть точно

представлен линейной комбинацией M взаимно ортогональных компонент.


В общем случае для точного представления СА, в который входит N
элементов в ортонормированном базисе M -мерного векторного пространства,
необходимо M 2 N⋅M чисел. Первое слагаемое M 2 — это численное
представление M ортов, каждый из которых для своей записи требует M
чисел. Второе слагаемое N⋅M — общее число координат, необходимое для
представления N элементов, входящих в СА (для точного представления
каждого элемента необходимо M координат). Если окажется, как это и
происходит при кардиоайгеноскопии, что большинство координат стремится к
нулю, а значимыми оказываются всего K ≪ M координат, и, следовательно,
для представления необходимо всего K ортов, то для достаточно точного
представления всех элементов СА необходимо K⋅M K⋅N = K⋅ N M  чисел.

M 2 N⋅M M
Таким образом кардиоайгеноскопия позволяет в С 1= = раз
K⋅ M  N  K

M
сжимать СА при его хранении. Величина С 1= K при M =100÷1000 и

K =4÷5 может варьироваться в пределах С 1=20÷250 и увеличивается при

увеличении частоты дискретизации.


При использовании «естественного» базиса, когда информация
содержится непосредственно в отсчетах, нет необходимости хранить сам
«естественный» базис (орты такого «естественного» ОНБ представляют собой
строки единичной матрицы, представление сигнала в таком базисе
иллюстрируется рис. 5). Для точного воспроизведения СА в «естественном»
базисе требуется уже не M 2 N⋅M чисел, а N⋅M чисел. Эффективность
координат, то есть если заданы векторы V 1=[ x 1 ; y1 ; z 1] и V 2 =[ x 2 ; y 2 ; z 2 ] , то их скалярное
произведение V 1 , V 2= x 1⋅x 2 y 1⋅y 2 z 1⋅z 2 .

13
N⋅M
сжатия в этом случае С 2= K⋅M N  C 1 . При N =100÷1000 , M =100÷1000

и K =4÷5 величина С 2 может варьироваться в пределах 10÷125 .


Важно понимать, что СА несет в себе (вместе с положением R-зубцов)
всю диагностическую информацию в «упакованном виде». Это информация о
макросостоянии сердца, характеризующая ситуацию «в целом» на момент
снятия ЭКГ. Кардиоайгеноскоп позволяет эту информацию хранить в сжатом
виде, причем, как мы проиллюстрируем далее, используемый при этом ОНБ
дает новую полезную информацию о макросостоянии в момент обследования.

Рис. 5. Пример представления сигнала S на конечном интервале анализа в «естественном


базисе». Орты «естественного базиса» a, b, c, d, e – ортонормированы. Скалярные
произведения сигнала S и ортов совпадают с отсчетами сигналов. Сам сигнал равен сумме
произведений ортов на соответствующие орту скалярные произведения орта и сигнала.

14
Отметим, что дисперсионное картирование характеризует
макросостояние 2⋅M числами; M чисел представляют собой усредненный
элемент СА, а другие M чисел — среднее квадратическое отклонение от
усредненного элемента СА. Совершенно ясно, что ДК не позволяет по этим
2⋅M числам восстановить элементы СА; следовательно, при ДК мы теряем
часть информации о макросостоянии. Что это означает? Если мы хотим в
течение длительного времени (возможно, в течение всей жизни) хранить
информацию о макросостояниях, то мы не можем позволить хранить только
данные ДК. В этом случае необходимо хранить или всю ЭКГ, или СА, или СА,
сжатый с помощью кардиоайгеноскопа (вместе с данными о положении
R-зубцов).
Кардиоайгеноскопия открывает возможность хранить сжатые ЭКГ
населения большого города на одном носителе — без потери информации — в
форме, обеспечивающей быстрое и точное восстановление ЭКГ с
одновременным содержательным анализом PQRST-циклов и их вариаций как в
«коротком» времени — внутри СА, так и в «длинном» времени — в разных СА,
относящихся к разным датам снятия ЭКГ.
Поясним, за счет чего достигается такой результат. В тех случаях, когда из
ЭКГ можно построить синхронный ансамбль (то есть хотя бы в одном из
отведений R-зубцы достаточно выражены), многомерные векторы,
представляющие собой элементы СА, «вмещаются» в подпространство весьма
малой размерности (три - пять) исходного M -мерного векторного
пространства элементов СА (размерность которого определяется числом
отсчетов на интервале анализа и достаточно высока — M =100÷1000 ). Это
означает, что СА представляет собой достаточно «плоское» многообразие;
математики сказали бы, что оно лежит в «гиперплоскости» достаточно малой
размерности (три - пять). Поэтому, если выбрать для представления элементов
СА с использованием ОНБ такой базис, чтобы часть его ортов принадлежала
«вмещающей гиперплоскости», то этих ортов будет хватать для достаточно

15
точного описания поведения любого элемента СА. Эти «хорошие» орты
совпадают с первыми собственными векторами СА, причем более 90 % энергии
любого элемента СА сосредоточены в компоненте элемента, задаваемой первым
собственным вектором (типичным представителем), а вторая значимая
компонента элемента СА задается вторым собственным вектором (5-6 %
энергии), который представляет собой типичные микроальтернации.
Таким образом, мы утверждаем, что, с точки зрения современной
математики, любой синхронный ансамбль не только «очень плоский», но и в
достаточно сильной степени «однонаправлен».
Представим себе ситуацию, когда мы будем получать ЭКГ граждан в
результате периодических обследований, каждый раз строя собственные
векторы, описывающие конкретное состояние обследуемого. После каждого
обследования мы будем получать свое «вмещающее пространство» СА, которое,
как мы уже понимаем, практически является «плоским». Ясно, что каждая из
патологий будет задаваться своей плоскостью. Движение от обследования к
обследованию такой «плоскости» для каждого из обследуемых будет задавать
его индивидуальную траекторию.
Простейшие расчеты показывают, что угол между направлениями,
задаваемыми типичным представителем для II отведения условно здорового
(например, пациент № 155 из [4]) и типичным представителем для II отведения
при аритмическом синдроме (например, пациент № 286 из [4]), составляют 77
градусов, а угол между типичными микроальтернациями (вторыми
собственными векторами) составляет 61 градус. Было бы крайне интересно
проследить динамику поворота плоскости, задаваемой первыми двумя
собственными векторами, у пациента с аритмическим синдромом в течение
длительного времени при периодических обследованиях. К сожалению, база
данных [4] не содержит необходимой информации.
Использование кардиоайгеноскопа позволяет организовать сервис,
обеспечивающий хранение больших массивов оцифрованных ЭКГ при

16
приемлемых затратах, обеспечивающий для пользователей не только хранение,
но и сигнализацию о значимых изменениях ЭКГ.
При дальнейшем нам потребуются понятия «проекция», «компонента»,
«носитель», «характерная точка компоненты (носителя)» а также понятие
«статистики характерных точек».
j -ая проекция (координата) некоторого конкретного ЭСА представляет

собой скалярное произведение это конкретного элемента СА на j -ый

собственный вектор. Проекция — число. Размерность проекции —


милливольты, в то время как отсчеты СВ — безразмерны.
j -ая компонента ЭСА — вектор, представляющий собой произведение

j -ой проекции (число) на j -ый СВ. Отсчеты компоненты ЭСА уже имеют

размерность и эта размерность — милливольты.


Сумма первых (четырех) компонент ЭСА с высокой точностью совпадает
с ЭСА. Это иллюстрирует таблица 1. В таблицу сведены первые четыре
компоненты и их суммы, приближающие несколько элементов СА. Эти
элементы взяты из СА, полученного при кардиоайгеноскопии II отведения ЭКГ
пациента № 155 (условно здоров) из базы данных [4]. Во втором — пятом
столбцах таблицы приведены компонеты № 1 - № 4 соответствующих ЭСА, а в
шестом — сумма компонент, практически совпадающая с ЭСА7. Как видно из
графиков, уже первые две компоненты обеспечивают хорошее представление
ЭСА.
Для дальнейшего изложения важным будет понятие «носитель» и понятие
«характерная точка собственного вектора, компоненты, носителя».
Математикам известно, что собственные векторы заданы с точностью до
постоянного множителя [9]. В то же время, для того, чтобы использовать СВ в
качестве ортов ОНБ, необходимо, чтобы СВ были нормированы, то есть
скалярное произведение СВ на самого себя должно быть равно единице.
Следовательно, нормированные собственные векторы задаются с точностью до
7 Результаты, приведенные в таблице 1, пользователь может воспроизвести самостоятельно с использованием
режима визуализации «4 компоненты ЭСА» демонстрационной версии кардиоайгеноскопа.

17
знака. Во втором и третьем столбцах таблицы 2 приведены варианты СВ+ и
СВ-, получаемые друг из друга взаимным инвертированием. После сделанной
интродукции о свойствах собственных векторов, перейдем к понятию
характерной точки СВ.
Под характерной точкой (ХТ) собственного вектора будем понимать
номер отсчета СВ, для которого абсолютная величина отсчета максимальна. Во
втором и третьем столбцах таблицы 2 характерные точки СВ обозначены
кружочками. Абсцисса, соответствующая кружочку, и есть ХТ, а ордината СВ в
ХТ максимально удалена от оси абсцисс. Так как компонента получается из
собственного вектора путем его умножения на величину проекции, то очевидно,
что ХТ собственного вектора и соответствующей ему компоненты совпадают.
Таблица 1
Иллюстрация свойств первых четырех компонент для трех ЭСА, полученных при
кардиоайгеноскопии II отведения ЭКГ пациента № 155 из базы данных [4].

18
Носителем будем называть ненормированный собственный вектор, такой,
что его значение в ХТ равно единице. В таблице 2 в четвертом столбце
показаны носители, соответствующие СВ, приводимым во втором и третьем
столбцах.
Использование носителей и характерных точек открывает определенные
удобства при визуальном и статистическом анализе компонент элементов
синхронного анализа ЭКГ.
Напомним, что любая компонента есть произведение соответствующего
СВ на величину проекции. Величины проекций — свои для каждого элемента
синхронного ансамбля. Проекции на определенный СВ, вычисленные для всех
элементов СА, образуют выборку объема N , где N — число ЭСА.
Конечно, статистические свойства компонент можно было бы характеризовать
статистическими свойствами проекций, но удобнее это делать через
статистические свойства компоненты в ХТ.
Таблица 2
Иллюстрация понятия характерной точки собственного вектора и/или носителя (на примере
пациента № 155 из базы данных [4])

№ СВ+ СВ- Носитель

19
В этом случае статистические свойства первой компоненты элементов СА
будут характеризоваться статистическими свойствами R-зубца первой
компоненты, а статистические свойства второй компоненты будут
характеризоваться статистическими свойствами отсчета второй компоненты в
ХТ. Именно таким образом ведется статистический анализ компонент в
кардиоайгеноскопе.
Далее на рис. 49 показан пример статистического анализа первой и второй
компонент СА, полученного при кардиоайгеноскопии ЭКГ во II отведении
пациента № 286 из БД [4]. В правой колонке показаны первая и вторая
компоненты СА с привязкой к их статистическим характеристикам (среднему
значению, размаху выборки, моде), а в левой колонке — гистограммы и так
называемые ядерные оценки плотности вероятностей8.
Далее везде по тексту в качестве статистических свойств ХТ будут
рассмотрены среднее, минимальное, максимальное, медианное и модальное
(наиболее вероятное) значение компоненты в ХТ. Если первые четыре величины
являются наиболее часто применяемыми статистиками, то пятая требует
некоторых пояснений.
Модой в статистике принято называть то значение, которое соответствует
максимуму плотности вероятностей9. В предлагаемой демонстрационной
версии используются так называемые ядерные оценки плотности
вероятностей10, максимум которой и определяет модальное значение.
При подробном разборе работы демонстрационной версии продвинутому
пользователю возможно пригодится глоссарий (приложение 5).

8 Ядерная оценка плотности вероятностей — плавная кривая, которая является оценкой для так называемой
плотности вероятностей. О свойствах плотности вероятностей смотрите [9], а о свойствах ядерной оценки — в
приложении 3.
9 Плотностью вероятностей  x называется неотрицательная функция переменной x , площадь под
которой равна единице, определяющая вероятность нахождения случайной величины в малой окрестности
 
 точки x 0 соотнощением P [ x 0−  xx 0 ]≈ x ⋅ .
2 2
10 Для сравнения в ряде интерфейсов приводится и гистограмма.

20
Описание демонстрационной версии
Авторы не смогли бы оперативно предоставить пользователю
демонстрационную версию, если бы наши французские коллеги не создали
систему Scilab, которая объединяет в себе большинство известных на настоящее
время вычислительных методов и которая распространяется по бесплатной
лицензии CeCILL [7]. Пользователь может развернуть ее на своем
персональном компьютере и воспользоваться предлагаемым нами программным
обеспечением, которое представляет собой так называемые «внутренние»
модули Scilab (они содержатся в папке demokard, которую пользователю нужно
скопировать с прилагаемого диска на рабочий стол вашего персонального
компьютера). Авторские права на предлагаемые внутренние модули
принадлежат группе лиц и ООО «Собственный вектор». В соответствии с
принадлежащим нам правом мы распространяем эти внутренние модули
бесплатно — пользователь может модифицировать их как угодно. Однако
реализованная в этом программном продукте полезная модель защищена
патентом РФ, и, следовательно, любое ее коммерческое использование
подлежит лицензированию. Мы готовы предоставить любому юридическому
и/или физическому лицу лицензию на использование полезной модели
«Кардиоайгеноскоп» на взаимовыгодных условиях.
Тексты программ имеются в приложении 2 и в папке demokard на диске.
На диске имеется также папка Scilab, в которой расположены установочные
файлы версии 5.4.1. Рекомендуем пользователю начать именно с этой версии —
потому, что следующие версии имеют некоторую специфику в наименовании и
использовании некоторых стандартных функций. Поэтому приводимые в
приложении 2 и на диске программы при использовании следующих версий,
возможно, потребуют незначительной доработки, для которой вам придется
привлекать специалиста.

21
Как развернуть Scilab на персональном компьютере?
Начните с переноса папки Scilab, которая расположена на прилагаемом к
брошюре диске, на рабочий стол на вашем персональном компьютере. После
окончания переноса откройте эту папку (см. рис. 6) и запустите установщик
Scilab-5.4.1.

Рис. 6.
Далее следуйте инструкциям установщика, принимая все параметры установки
по умолчанию. На сайте [7] вы можете найти самые новые версии Scilab и
ознакомиться с лицензией CeCILL.

Подготовка данных
Исходные данные должны быть представлены в виде стандартных
тестовых файлов11, содержащих 12 столбцов, в которых каждому столбцу
соответствует свое отведение в порядке I, II, III, avl, avr, avf, V1,V2, V3, V4, V5,
V6. Файлы из базы [4] 12приведены к вышеописанному формату, содержатся в
папке «Данные» (см. рис. 7). Они разделены по диагнозам, номер файла
соответствует номеру пациента в базе [4]. Файлы имеют расширение txt.
Ниже приводится пример фрагмента допустимого текстового файла:
1063 -150 -1214 -456 1139 -683 3121 1251 761 2932 1244 892
1066 -150 -1216 -458 1141 -683 3119 1252 760 2932 1246 894
1078 -144 -1222 -467 1150 -683 3122 1259 762 2937 1253 902
1074 -139 -1213 -467 1143 -676 3117 1259 772 2944 1257 909
1071 -145 -1216 -462 1143 -681 3119 1250 764 2938 1250 904
1081 -142 -1223 -469 1152 -683 3120 1256 766 2942 1250 906
11 Для ввода данных в демонстрационной версии использована функция fscanfMat — стандартная функция
Scilab, предназначенная для считывания матрицы из текстового файла. Функция fscanfMat игнорирует
нечисловые строчки (комментарии), помещаемые в начале файла. Все последующие числовые строчки
должны иметь одинаковое количество чисел, которые разделены или пробелом, или символом табуляции.
Функция fscanfMat поддерживает файлы с кодировкой ANSI/ASCII и UTF-8.
12 Эти файлы, как и в исходном варианте, содержат 15 столбцов, из которых далее используются 12.

22
а)

б)
Рис. 7. Содержимое папки «demokard/Данные» - а) и содержимое папки
«demokard/Данные/Аритмический синдром» - б). Файлы с данными из [4] упорядочены по
номерам пациентов в исходной базе.

Разворачивание демонстрационной версии на компьютере


пользователя
Разместите на рабочем столе вашего компьютера папку «demokard».
Запустите Scilab. В рабочем окне появится командное окно Scilab — см. рис. 8.

Рис. 8. Командное окно появляется сразу после запуска Scilab.


После клика по кнопке «Инструменты» появится меню — см. рис. 9.
Кликните «Текстовый редактор SciNotes». Откроется окно редактора,
представленное на рис. 10. Выберите позицию главного меню SciNotes «Файл»,
а затем в открывшемся меню позицию «Открыть» - см. рис. 11 (также можно
воспользоваться горячими клавишами Ctrl+O).

23
Рис. 9. Меню «Инструменты». Кликните «Текстовый редактор SciNotes».

Рис. 10. Окно редактора SciNotes открыто.

Рис. 11. Меню SciNotes при нажатии на кнопку «Файл» главного меню.

24
В открывшемся навигаторе файлов найдите директорию demokard (часть
ее показана на рис. 12) и сделайте двойной клик на файле Akrdm.sce.

Рис.12.
Откроется выбранный файл, фрагмент которого представлен на рис. 13. На
рисунке выделена та часть пути, которая зависит от настроек компьютера
пользователя. Эту часть пользователь меняет сам. Для этого ему достаточно в
проводнике открыть перенесенную на рабочий стол папку demokard и
скопировать путь, указанный в окошке — см. рис. 14 б). После этого
перезапишите файл, кликнув по иконке , и закройте файл Akrdm.sce.
Правильность выполненных действий проверяется запуском
демонстрационной версии (об этом — в следующем подразделе).

Рис. 13. Открытый в редакторе SciNotes файл Akrdm.sce из папки demokard. Отмечена часть
пути, которая подлежит изменению в зависимости от настройки вашего компьютера.

25
б)

а)
Рис. 14. Папка demokard, открытая в навигаторе операционной системы компьютера — а).
Для получения пути к папке кликните по символу в верхнем окне. Появится выделенный
путь — б).
Скопируйте его с помощью Ctrl+C и вставьте его в нужное место файла Akrdm.sce с
помощью горячей клавиши Ctrl+V.

Запуск демонстрационной версии кардиоайгеноскопа


Перейдите в командное окно Scilab – см. рис. 8. В главном меню выберите
позицию «Файл», а затем в открывшемся меню кликните «Выполнить» (или
горячая клавиша Ctrl+E) – см. рис. 15. После клика на «Выполнить» и перехода
в папку demokord появится окно рис. 14. Кликните дважды на Akrdm.sce.

Рис. 15. Главное меню. Команда «Выполнить» обеспечивает переход к исполняемому файлу.
(Также можно, находясь в командном окне, использовать горячие клавиши Ctrl+E).

26
Измените, если это необходимо, параметры в окне ввода, представленном
на рис. 16. После установки параметров кликните «ОК».

а) б)
Рис. 16. Окно ввода параметров исходного временного ряда и параметров
кардиоайгеноскопа. По умолчанию в окне установлены параметры, соответствующие
временным рядам из БД [4], а также наиболее часто используемые параметры
кардиоайгеноскопа. Назначение параметров подробно разъяснено в приложении 2.

На экране появится окно выбора файла — см. рис. 7. Выберите


анализируемый файл и дважды кликните по его наименованию. Закройте
появившуюся информационную панель — см. рис. 17 и подождите вывода на
экран графиков, представленных на рис. 18.

Рис. 17.

27
Рис. 18. Пример ЭКГ из раздела «Аритмический синдром» (пациент № 286).
Слева — фронтальные отведения, справа — грудные отведения.

После окончания вывода на экран временных рядов отведений появится


сообщение с кнопками — для выбора синхронизирующего отведения13 — см.
рис. 19.

Рис. 19. Окно выбора синхроотведения.


Нажав на кнопку, соответствующую выбранному отведению, получим
диалоговое окно, представленное на рис. 20. Выберем в окне «Ввод значений»
правую границу, например, 5000, и кликнем «ОК». Результат представлен на
рис. 21. Пользователю предлагается выбрать между дальнейшей обработкой
(«Кардиоайгеноскопия») и возвратом к окну рис. 16 («В начало»). При
продолжении обработки («Кардиоайгеноскопия») пользователю предлагается
выбрать конечный интервал анализа (по умолчанию он равен средней величине
R-R интервала, то есть 100 %) — см. рис. 22. При нажатии на «ОК» на экран

13 По R-зубцам выбранного отведения будут синхронизированы все другие отведения.

28
выводятся сообщения об окончании кардиоайгеноскопии в отведениях — см.
рис. 23. Далее пользователю предлагается выбрать режим визуализации
результата (см. рис. 24).
Варианты визуализации результатов кардиоайгеноскопии представлены в
следующем разделе.

Рис. 20. Выбор границ интервала обработки ЭКГ.

Рис. 21. В окне показан результат определения положения R-зубцов. Предлагается


продолжить обработку. В случае, если пользователь недоволен качеством фиксации
положения R-зубцов, он выбирает режим «В начало» и переходит к диалоговому окну рис.
16, в котором изменяет уровень квантили в поле «Квантиль14 порога синхронизации»
14 Напомним, что квантиль X q порядка 0q1 некоторой случайной величины  — это такая
величина, значение которой не превышается случайной величиной  с вероятностьюю q . Таким
образом, квантиль уровня 0.97 — это величина, которая превышается в 3 % случаев.

29
Рис. 22.

Рис. 23.

30
а) б)

в) г)
Рис. 24. На рисунках а), б), в), г) и д)
показано содержание окна «Ввод значений»
для ввода режима визуализации результатов
кардиоайгеноскопии. В поле «Alias»
пользователь вносит идентификатор
пациента, который будет использован далее
при визуализации. Необходимые элементы
визуализации пользователь отмечает
единицами.

д)

31
Визуализация результатов кардиоайгеноскопии

Режим «Типичные представители СА (СВ № 1) во ФО (1/0)»

Рис. 25. Первые три колонки — типичные представители синхронного ансамбля (первые
собственные векторы) во фронтальных отведениях. По оси абсцисс — секунды, по оси
ординат — относительные единицы. В четвертой колонке — зависимости энергетического
вклада компоненты в % (ось ординат) от номера компоненты (ось абсцисс).

Режим «Типичные представители СА (СВ № 1) в ГО (1/0)»

Рис. 26. Первые три колонки — типичные представители синхронного ансамбля (первые
собственные векторы) в грудных отведениях. По оси абсцисс — секунды, по оси ординат —
относительные единицы. В четвертой колонке — зависимости энергетического вклада
компоненты в % (ось ординат) от номера компоненты (ось абсцисс).

32
Режим «Типичные представители АМА (СВ № 2) во ФО (1/0)»

Рис. 27. Первые три колонки — типичные представители ансамбля микроальтернаций


(вторые собственные векторы) во фронтальных отведениях. По оси абсцисс — секунды, по
оси ординат — относительные единицы. В четвертой колонке — зависимости
энергетического вклада компоненты в % (ось ординат) от номера компоненты (ось абсцисс).

Режим «Типичные представители АМА (СВ № 2) в ГО (1/0)»

Рис. 28. Первые три колонки — типичные представители ансамбля микроальтернаций


(вторые собственные векторы) в грудных отведениях. По оси абсцисс — секунды, по оси
ординат — относительные единицы. В четвертой колонке — зависимости энергетического
вклада компоненты в % (ось ординат) от номера компоненты (ось абсцисс).

33
Режим «Первая компонента во ФО (1/0)»

Рис. 29. Первые три колонки — усредненные по СА первые компоненты во фронтальных


отведениях. Горизонтальными линиями показаны границы вариаций R-зубца первой
компоненты. По оси абсцисс — секунды, по оси ординат — относительные единицы. В
четвертой колонке — зависимости энергетического вклада компоненты в % (ось ординат) от
номера компоненты (ось абсцисс).

а)
Рис. 30. Табличное определение отклонения
электрической оси сердца [13]. Если
пользователь отвечает «Да», то появляется
система координат б), в которой по оси
абсцисс и по оси ординат откладывается
алгебраическая сумма зубцов Q, R и S в
первом (ось абсцисс) и третьем (ось ординат)
отведениях. Соответствующая точка «Факт»
отмечена кружком. Линии соответствуют
разным значениям угла  отклонения
электрической оси сердца (отсчитывается от
горизонтальной линии против часовой
стрелки). Пользователь оценивает угол б)
визуально по положению кружка «Факт» по
отношению к линиям.

34
Режим «Первая компонента в ГО (1/0)»

Рис. 31. Первые три колонки — усредненные по СА первые компоненты в грудных


отведениях. Горизонтальными линиями показаны границы вариаций R-зубца первой
компоненты. По оси абсцисс — секунды, по оси ординат — относительные единицы. В
четвертой колонке — зависимости энергетического вклада компоненты в % (ось ординат) от
номера компоненты (ось абсцисс).

Режим «Вторая компонента во ФО (1/0)»

Рис. 32. Первые три колонки — вторые компоненты во фронтальных отведениях.


Горизонтальными линиями показаны границы вариаций характерной точки. По оси абсцисс
— секунды, по оси ординат — относительные единицы. В четвертой колонке — зависимости
энергетического вклада компоненты в % (ось ординат) от номера компоненты (ось абсцисс).

35
Режим «Вторая компонента в ГО (1/0)»

Рис. 33. Первые три колонки — вторые компоненты в грудных отведениях. Горизонтальными
линиями показаны границы вариаций характерной точки. По оси абсцисс — секунды, по оси
ординат — относительные единицы. В четвертой колонке — зависимости энергетического
вклада компоненты в % (ось ординат) от номера компоненты (ось абсцисс).

Режим «СК микроальтернаций во ФО (1/0)»

Рис. 34. Первые три колонки — средний квадрат микроальтернаций (средний квадрат вторых
компонент) во фронтальных отведениях. По оси абсцисс — секунды, по оси ординат —
относительные единицы. В четвертой колонке — зависимости энергетического вклада
компоненты в % (ось ординат) от номера компоненты (ось абсцисс).

36
Режим «СК микроальтернаций в ГО (1/0)»

Рис. 35. Первые три колонки — средний квадрат микроальтернаций (средний квадрат вторых
компонент) в грудных отведениях. По оси абсцисс — секунды, по оси ординат —
относительные единицы. В четвертой колонке — зависимости энергетического вклада
компоненты в % (ось ординат) от номера компоненты (ось абсцисс).

Режим «Отведения II, III, V1, V6 (1/0)»

Рис. 36. Первая компонента (усредненная по СА) в отведениях II, III, V1, V6. В четвертой
колонке — зависимости энергетического вклада компоненты в % (ось ординат — масштаб
логарифмический) от номера компоненты (ось абсцисс). Руководство [8] рекомендует эти
отведения для определения источника возбуждения и оценки функции проводимости.

37
Режим «Отведения I, II, III, avr, avl, avf (1/0)»

Рис. 37. Первая компонента (усредненная по СА) в отведениях I, II, III, avl, avf. Руководство
[8] рекомендует эти отведения для определения положения электрической оси сердца во
фронтальной плоскости. Положение определяется так же, как это представлено на рис. 30.

Режим «Все отведения (1/0)»

Рис. 38. Первая компонента (усредненная по СА). Все отведения. Руководство [8]
рекомендует эти отведения для определения положения электрической оси сердца во
фронтальной плоскости. Положение определяется так же, как это представлено на рис. 30.

38
Режим «Отведения I, II, III (1/0)»

Рис. 39. Первая компонента (усредненная по СА) в отведениях I, II, III. Руководство [8]
рекомендует эти отведения для определения поворота сердца вокруг поперечной оси и
анализа предсердного зубца P. Положение определяется так же, как это представлено на рис.
30.

Режим «Отведения avl, V5, V6 (1/0)»

Рис. 40. Первая компонента (усредненная по СА) в отведениях avl, V5, V6. Руководство [8]
рекомендует эти отведения для анализа предсердного зубца P.

39
Режим «Отведения avf, II, III (1/0)»

Рис. 41. Первая компонента (усредненная по СА) в отведениях avf, II, III. В Руководство [8]
рекомендует эти отведения для анализа предсердного зубца P.

Режим «Отведения I, II, avf, V4, V5, V6 (1/0)»

Рис. 42. Первая компонента (усредненная по СА) в отведениях I, II, avf, V4, V5, V6.
Руководство [8] рекомендует эти отведения для выявления признаков синусовой тахикардии.

40
Режим «Отведение II (1/0)»

Рис. 43. Первая компонента (усредненная по СА) во II отведении. Руководство [8]


рекомендует это отведение для выявления нарушений электролитного обмена.

41
Режим «Восстановление ЭКГ во ФО (1/0)»

Рис. 44. Восстановленные ЭКГ во фронтальных отведениях с использованием компонент,


задаваемых при вводе параметров в окне ввода, представленном на рис. 16.

42
Режим «Восстановление ЭКГ в ГО (1/0)»

Рис. 45. Восстановленные ЭКГ в грудных отведениях с использованием компонент,


задаваемых при вводе параметров в окне ввода, представленном на рис. 16.

43
Режим «Восстановление ЭКГ в II (1/0)»

Рис. 46. Восстановленная ЭКГ во II отведении с использованием компонент, задаваемых при


вводе параметров в окне ввода, представленном на рис. 16.

Режим «Восстановление ЭКГ в II, III, avf (1/0)»

Рис. 47. Восстановленные ЭКГ в отведениях II, III, avf с использованием компонент,
задаваемых при вводе параметров в окне ввода, представленном на рис. 16.

44
Режим «Восстановление ЭКГ в V1, V2, V5, V6 (1/0)»

Рис. 48. Восстановленные ЭКГ в отведениях V1, V2, V5, V6 с использованием компонент,
задаваемых при вводе параметров в окне ввода, представленном на рис. 16.

45
Режим «Статистики 1-ой и 2-ой компонент (1/0)»

а)

б)

в)
Рис. 49. Режим б) соответствует включённой позиции «На разных графиках», а режим в) —
«На одном графике», задаваемым в окне, представленном на а). На графиках в правой
колонке кружочками обозначены ХТ соответствующих компонент, а горизонтальными
линиями (что они обозначают — смотрите в легенде) показаны статистики компонент в ХТ.

46
Режим « Статистики 1-ой и 3-ей компонент (1/0)»

Рис. 50. В левой колонке представлены гистограммы и ядерные оценки плотности


вероятностей ХТ первой и третьей компонент. В правой колонке представлены (сверху вниз),
соответственно, первая и третья компоненты. Кружочками отмечены ХТ, горизонтальными
линиями — статистики ХТ, описания которых приведены в легендах графиков.

Режим « Статистики 1-ой и 4-ой компонент (1/0)»

Рис. 51. В левой колонке представлены гистограммы и ядерные оценки плотности


вероятностей ХТ первой и третьей компонент. В правой колонке представлены (сверху вниз),
соответственно, первая и третья компоненты. Кружочками отмечены ХТ, горизонтальными
линиями — статистики ХТ, описания которых приведены в легендах графиков.

47
Режим « Наиболее вероятный PQRST (1/0)»

а)

б)
Рис. 52. В двух левых колонках представлены ядерные оценки ХТ первой - четвертой
компонент (слева направо и сверху вниз, соответственно). В диалоговом окне представлены
значения мод ХТ компонент, показанные на графиках ядерных оценок вертикальными
линиями. На правом графике представлен восстановленный PQRST-цикл, соответствующий
модальным значениям ХТ. Графики а) и б) отличаются только положением диалогового
окна. Значения в окне могут быть изменены. Нажатие на «ОК» приводит к ситуации,
показанной на рис. 53.

48
а)

б)
Рис. 53. При изменении значений в окне и нажатии на «ОК» рассчитывается PQRST-цикл,
соответствующий вновь введенным значениям, который отображается на правом графике
вместе с циклом, соответствующим модальным значениям.

49
Режим « 4 компоненты и ЭСА»

а)
б)

в)
Рис. 54. В режиме «4 компоненты и ЭСА» в любом из отведений (выбираемом в окне а))
можно просмотреть первые 4 компоненты для ЭСА, номер которого выбирается в окне б).
Результат просмотра отражается в окне, представленном на в). Имеется возможность
изменить номер ЭСА и продолжить наблюдение.

50
Режим « Статистики угла между ТП и ЭСА»

Как было отмечено во введении, типичный представитель (первый


собственный вектор) обладает тем свойством, что сумма квадратов проекций
ЭСА на ТП максимальна. Это иллюстрируется рис. 55.

Режим «Статистика угла между ТП и ЭСА» как раз показывает поведение


углов между элементами СА и ТП. При вычислении каждого из углов между
некоторым ЭСА и ТП использовано соотношение Шварца [9], которое
позволяет интерпретировать скалярное произведение между двумя векторами
единичной длины как косинус угла между ними. Таким образом получалась
выборка углов, для которой определялось СКО угла и строилась ядерная
оценка, по которой определялось мода (наиболее вероятное значение) угла
между ЭСА и ТП. На рис. 56 представлены ядерные оценки для угла во всех
отведениях (пациент № 286 из [4]). Из графиков следует, что ЭСА
прецессируют вокруг ТП в конусе с образующей, отстоящей от ТП не более,
чем на 20 угловых градусов.

Рис. 55. Элементы синхронного ансамбля a1 , a2 ,... , aN прецессируют вокруг типичного
представителя в некотором конусе.

51
Рис. 56. В данном режиме строятся выборки (для всех отведений) угла между ЭСА и
соответствующим ТП. Для этих выборок строятся ядерные оценки плотности вероятностей,
определяются моды углов и их СКО.

52
Литература
1. Исакевич В.В., Исакевич Д.В., Батин А.С. Кардиоайгеноскоп. Полезная модель
№ 128470RU. http://bankpatentov.ru/node/378077.
2. Исакевич Д.В., Исакевич В.В. Кардиоайгеноскоп — новая полезная модель
обработки ЭКГ. — М. Издательство Перо, 2014. — 138 с. ISBN 978-5-00086-
280-3.
3. Иванов Г.Г., Сула А.С. Дисперсионное ЭКГ-картирование: теоретические
основы и клиническая практика. М. Техносфера, 2009, 192 с.
4. The PTB Diagnostic ECG Database - The PTB Diagnostic ECG Database -
http://www.physionet.org/physiobank/database/ptbdb/
5. Аль-Барати Б.С., Исакевич В.В., Исакевич Д.В., Сушкова Л.Т. Айгеноскопия в
задачах обработки электрокардиосигналов. Нелинейный мир. М.: Издательство
Радиотехника, 2015. № 6, с. 68-75.
6. Яу Ш., Надис С. Теория струн и скрытые измерения Вселенной. - СПб.: Питер,
2015. - 400 с.
7. Scilab CeCILL. http://scilab.org
8. Струтынский А.В. Электрокардиограмма: анализ и интерпретация/ А.В.
Струтынский. — 15-е изд. - М.: МЕДпресс-информ, 2013. — 244 с. : илл.
9. Корн Г., Корн Т. Справочник по математике (для научных работников и
инженеров). М.: 1984. — Наука, 831 с.
10. Болезни сердца и сосудов. Руководство Европейского общества кардиологов /
под ред. А. Джона Кэмма, Томаса Ф. Люшера, Патрика В. Серруиса; пер. с англ.
под ред. Е.В. Шляхто. - М.: ГЭОТАР-Медиа, 2011. — 1480 с.
11. Kernel density estimation. http//:en.m.wikipedia.org/wiki/Kernel_density_estimation
12. Градштейн И.С., Рыжик И.М. Таблицы интегралов, сумм, рядов и
произведений. Изд. 4-е, переработанное при участии Ю.В. Геронимуса,
М.Ю. Цейтлина. М.: Государственное издательство физико-математической
литературы, 1962. — 1100 с.
13. Зудбинов Ю.И. Азбука ЭКГ и боли в сердце / Ю.И. Зубдинов. — Изд. 19-е. —
Ростов н Д: Феникс, 2015. — 247 с.

53
Вместо послесловия

В качестве послесловия приведем цитаты из из известного руководства


[10, стр 75]:
«Постоянное мониторирование станет очень важной областью в
ближайшем будущем … Долгосрочное мониторирование стало важным шагом к
осознанию глубины проблемы предсердных аритмий. Использование новых
имплантируемых и неимплантируемых записывающих устройств приведет к
значительным изменениям наших знаний и терапевтических стратегий. ЭКГ
вновь окажется в центре внимания».
И далее : «Регистрацию и интерпретацию клинических событий можно
облегчить за счет передачи данных ЭКГ с использованием телеметрии. В
будущем изобретатели смогут предложить облегченные схемы быстрого
размещения электродов, а компьютерный анализ аритмий будет
усовершенствован. Стационары должны располагать службами дистанционной
интепретации данных ЭКГ».

Для авторов данной работы достаточно очевидно, что задачи хранения и


интерпретации больших массивов ЭКГ будут становиться все более и более
актуальными. Мы надеемся, что при решении этих задач найдется место и
кардиоайгеноскопии — новой полезной модели обработки ЭКГ.

Авторы

54
Приложение 1. Лицензионное соглашение
Правообладателями программного обеспечения «Демонстрационная
версия кардиоайгеноскопа на Scilab v.1» (Свидетельство о государственной
регистрации программы для ЭВМ № 2016616613), приведенного в приложении
2 и в одноименной папке на диске, являются ООО «Собственный вектор»
(далее «Лицензиар»).
«Демонстрационная версия кардиоайгеноскопа на Scilab v.1» может быть
использована любым физическим и/или юридическим лицом (далее
«Лицензиат») в рамках нижеследующего лицензионного соглашения.

Лицензионное соглашение
Программное обеспечение «Демонстрационная версия кардиоайгеноскопа
на Scilab v.1» - свидетельство о государственной регистрации программы для
ЭВМ № 2016616613 (далее «Программа») может быть использовано
Лицензиатом на территории ЕАЭС в течение неограниченного периода времени
при выполнении следующих условий:
1. Лицензиат сообщит о факте использования Программы путем пересылки
по электронному адресу eigenoscope@yandex.ru нижеследующей
Регистрационной формы.
2. При передаче Программы другому физическому или юридическому лицу
Лицензиат передаст ее вместе с Регистрационной формой.
3. Факт принятия Лицензиатом обязательств по п.1 и п.2 настоящего
лицензионного соглашения подтверждается отправкой Лицензиатом
заполненной Регистрационной формы в адрес Лицензиара.
4. Лицензионное соглашение считается заключенным в момент получения
Лицензиатом с электронного адреса Лицензиара eigenoscope@yandex.ru
уведомления о получении Регистрационной формы Лицензиата.
Лицензиар
ООО «Собственный вектор»

55
Регистрационная форма
к лицензионному соглашению на программу для ЭВМ (Свидетельство о
регистрации программы для ЭВМ № 2016616613) «Демонстрационная версия
кардиоайгеноскопа на Scilab v.1» (После заполнения высылается по адресу
eigenoscope@yandex.ru)

1. Фамилия, имя, отчество Лицензиата (обязательно)


__________________________________________________________________________
2. Сфера деятельности Лицензиата (необязательно)
__________________________________________________________________________
3. Должность Лицензиата (необязательно для физического лица)
__________________________________________________________________________
4. Почтовый адрес Лицензиата для направления корреспонденции (необязательно)
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
5. Телефон, факс Лицензиата (необязательно)
__________________________________________________________________________
6. E-mail Лицензиата (обязательно)
__________________________________________________________________________
7. Предложения Лицензиата по сотрудничеству (необязательно)
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
8. Дата заполнения (обязательно)_______________________________________________

56
Приложение 2. Демонстрационная версия
кардиоайгеноскопа на Scilab v.1
В приложении приведены полные тексты программы «Демонстрационная
версия кардиоайгеноскопа на Scilab v.1». Программа выполнена в виде
запускающего сценария, который содержит 10 кейсов, перечисленных в таблице
П2.1. В третьей колонке этой таблицы указаны имена модулей (файлы с
расширением sci), которые вызываются из соответствующих кейсов. Эти
модули — в свою очередь — могут вызывать другие модули (см. таблицу П2.2).
В таблице П2.3 перечислены переменные, доступные в рабочем окне
после окончания работы запускающего сценария программы.
Таблица П.2.4 поясняет взаимосвязи кейсов и экранных форм,
управляющих выполнением программы.
Таблица П2.5 иллюстрирует взаимосвязи кейсов и модулей с элементами
структурной схемы демонстрационного кардиоайгеноскопа, представленной на
рис. П2.1.

Кейсы, модули; их взаимосвязи и назначение


Таблица П2.1
Кейсы и вызываемые ими модули и сценарии

Номер Назначение Вызываемые модули, сценарии


кейса и примечания
1 О программе. см. рис. 17
2 Начальные установки переменных. см. рис. 16
3 Ввод исходного файла. см. рис. 12
4 1. Визуализация всех отведений с их см. рис. 18 — 20.
наименованиями без осей.
2. Выбор синхроотведения.
3. Визуализация в отдельном окне
сигнала синхроотведения.
4. Выбор границы обрабатываемого
сегмента ЭКГ.
5 Формирование синхросигнала. см. рис. 21.
6 1. Оценка положения R-зубцов для SciSinhroValid.sci
уровня квантили, взятой из
начальных установок.
2. Визуализация сигнала
синхроотведения с указанием
положения R-зубцов.
3. Выбор границ восстановления ЭКГ.
7 Кардиоайгеноскопия. SciAnsambl.sci

57
Номер Назначение Вызываемые модули, сценарии
кейса и примечания
SciLinTrendElim.sci
8 Решение о визуализации.
9 Визуализация. Interior01q.sci; Interior02q.sci;
Interior01qA.sci; Interior02qA.sci;
Interior01qC.sci; Interior02qC.sci;
Interior01qC2.sci; Interior02qC2.sci
Interior01qS.sci; Interior02qS.sci;
SciEVbearer.sci; SciXTEVStatistic.sci;
Interior04q.sci; Interior05q.sci;
Interior06q.sci; Interior07q.sci;
Interior08q.sci; Interior09q.sci;
Interior10q.sci; Interior11q.sci;
Interior12q.sci; Interior13q.sci;
Interior14q.sci; Interior15q.sci;
Interior16q.sci; Interior19q.sci;
Interior20q.sci; Interior21q.sci;
Interior22q.sci; Interior23q.sci;
Bro2.sce; Bro4.sce

Таблица П2.2
Вызывающие и вызываемые модули

№пп Вызывающий модуль Вызываемый модуль


1 SciKVANT.sci SciFR.sci
2 Interior01q.sci; Interior02q.sci; SciSkl.sci
Interior01qA.sci; Interior02qA.sci;
Interior01qC.sci; Interior02qC.sci;
Interior01qC2.sci; Interior02qC2.sci;
Interior01qS.sci; Interior02qS.sci;
Interior04q.sci; Interior05q.sci;
Interior06q.sci; Interior07q.sci;
Interior08q.sci; Interior09q.sci;
Interior10q.sci; Interior11q.sci;
Interior12q.sci; Interior13q.sci;
Interior14q.sci; Interior15q.sci;
Interior16q.sci; Interior19q.sci
3 Interior19q.sci SciXTEVStatistic.sci
Interior20q.sci SsciEVbearer.sci
Interior21q.sci SciKern.sci
Interior22q.sci SciMaxAbs.sci
Interior23q.sci

58
№пп Вызывающий модуль Вызываемый модуль
4 Interior01qC.sci; Interior05q.sci; SciQRSsum.sci
Interior06q.sci; Interior09q.sci; SciAlpha.sci
5 SciXTEVStatistic.sci SciStat.sci
6 SciStat.sci KPDE.sci
7 SciKern.sci KPDE.sci
8 Bro4.sce SciNum2Name.sci
SciSwartz.sci

Переменные запускающего сценария программы, доступные из


рабочей области

Таблица П2.3

№пп Имя переменной Назначение переменной


1 Gain Усиление при записи сигналов отведений
2 F Частота дискретизации в Гц
3 Kdez Коэффициент децимации (выбирается из соображений
компромисса между скоростью вычислений и точностью)
4 nL Число отсчетов нормированного спектра собственных
значений (НССЗ) при визуализации
5 DJ Диапазон юстировки максимумов (дискреты)
6 nVosst Номера СВ для восстановления ЭКГ
7 F1 Частота в Гц после децимации
8 deltaT Дискрет времени в сек
9 FileName Полное имя файла исходных данных
10 nSinhro Номер синхроотведения
11 L1 Левая граница сегмента ЭКГ (дискреты)
12 L2 Правая граница сегмента ЭКГ (дискреты)
13 s Сегмент ВР в СО для обработки
14 S0 Сегмент сигнала после элиминации (длина S0 может не
совпадать с длиной s)
15 Z, Zmin,Zmax Средняя, минимальная и максимальная величины RR-
интервала (в дискретах), соответствегнно
16 Nmax Положение максимумов в S0
17 kTL Длина левой части ЭСА
18 kTR Длина правой части ЭСА

59
№пп Имя переменной Назначение переменной
19 OtvSA(i).SA СА в i-ом отведении
20 PSI1 СВ № 1 в отведениях (построчно)
21 PSI2 СВ № 2 в отведениях (построчно)
22 PSI3 СВ № 3 в отведениях (построчно)
23 PSI4 СВ № 4 в отведениях (построчно)
24 PSI5 СВ № 5 в отведениях (построчно)
25 PSI6 СВ № 6 в отведениях (построчно)
26 Q Усредненная по СА первая компонента в отведениях
(построчно)
27 Q1 Усредненная по СА вторая компонента в отведениях
(построчно)
28 Q2 СКО ЭСА
29 LNSSZ НССЗ по отведениям (построчно)
30 EKG Восстановленная ЭКГ по отведениям (построчно)

60
Пояснение взаимосвязи кейсов и экранных форм программы

61
62
63
Кейс № 7

Переход к кейсу № 8

64
Рис. П2.1. Структурная схема демонстрационного кардиоайгеноскопа.
1 — синхронизатор, 2 — формирователь синхронного ансамбля, 3 — вычислитель
собственных векторов и собственных значений, 4 — матричный перемножитель, 5 —
перемножитель матрицы на скаляр, 6 — вычислитель нормированного спектра собственных
значений, 7 — блок анализа и восстановления, 8 — ЭКГ, 9 — положение R-зубцов, 10 —
синхронные ансамбли отведений, 11 — собственные значения, 12 — нормированный спектр
собственных значений, 13 — собственные векторы, 14 — восстановленные компоненты
элемента синхронного ансамбля, 15 — проекции элемента синхронного ансамбля на
собственный вектор, 16 —обратная связь с пользователем.
Таблица П2.5

№ элемента Наименование элемента Наименование кейса и модулей


1 Синхронизатор Кейсы № 5 и № 6. Модули
SciSinhroValid.sci, SciKVANT.sci,
SciMaxRandMeanRR.sci, SciJust.sci
2 Формирователь синхронного Кейс № 8. Модули SciAnsambl.sci,
ансамбля SciLinTrendElim.sci
3 Вычислитель собственных Кейс № 8
векторов и собственных
значений

4 Матричный перемножитель

5 Перемножитель матрицы на
скаляр

6 Вычислитель
нормированного спектра
собственных значения

65
№ элемента Наименование элемента Наименование кейса и модулей
7 Блок анализа и Кейс № 9 и № 10. Модули
восстановления Interior01q.sci; Interior02q.sci;
Interior01qA.sci; Interior02qA.sci;
Interior01qC.sci; Interior02qC.sci;
Interior01qC2.sci; Interior02qC2.sci
Interior01qS.sci; Interior02qS.sci;
SciEVbearer.sci; SciXTEVStatistic.sci;
Interior04q.sci; Interior05q.sci;
Interior06q.sci; Interior07q.sci;
Interior08q.sci; Interior09q.sci;
Interior10q.sci; Interior11q.sci;
Interior12q.sci; Interior13q.sci;
Interior14q.sci; Interior15q.sci;
Interior16q.sci; Interior19q.sci;
Interior20q.sci; Interior21q.sci;
Interior22q.sci; Interior23q.sci;
Bro2.sce; Bro4.sce
8 ЭКГ s
9 Положение R-зубцов Nmax
10 Синхронные ансамбли T, OtvSA(i).SA
отведений отведений

11 Собственные значения l
12 Нормированный спектр LNSSZ
собственных значений

13 Собственные векторы PSI1,...,PSI6


14 Восстановленные Q
компоненты элементов
синхронного ансамбля

15 Проекции ЭСА на n-ый СВ T*p(:,n)


16 Обратная связь с Кейсы № 1- 4, 7, 9, 10
пользователем

66
Запускающий сценарий Akrdm.sce
// Это единственный файл, который требует своей адаптации перед началом работы. Вам
необходимо прописать путь PTH к рабочей папке, которую Вы создали для работы с этим
приложением на своем компьютере.
Clc; clear;
PTH='C:\Users\ddb\Desktop\demokard\';//путь к рабочей папке (РП)
cd(PTH); toolbar(-1,'off'); errclear;
exec(PTH+'SciKVANT.sci'); exec(PTH+'SciFR.sci'); exec(PTH+'SciMaxRandMeanRR.sci');
exec(PTH+'SciBegEnd.sci'); exec(PTH+'SciAnsambl.sci'); exec(PTH+'Interior01q.sci');
exec(PTH+'Interior01qA.sci'); exec(PTH+'Interior01qC.sci'); exec(PTH+'Interior01qC2.sci');
exec(PTH+'Interior01qS.sci'); exec(PTH+'Interior02q.sci'); exec(PTH+'Interior02qA.sci');
exec(PTH+'Interior02qC.sci'); exec(PTH+'Interior02qC2.sci'); exec(PTH+'Interior02qS.sci');
exec(PTH+'Interior04q.sci'); exec(PTH+'Interior05q.sci'); exec(PTH+'Interior06q.sci');
exec(PTH+'Interior07q.sci'); exec(PTH+'Interior08q.sci'); exec(PTH+'Interior09q.sci');
exec(PTH+'Interior10q.sci'); exec(PTH+'Interior11q.sci'); exec(PTH+'Interior12q.sci');
exec(PTH+'Interior13q.sci'); exec(PTH+'Interior14q.sci'); exec(PTH+'Interior15q.sci');
exec(PTH+'Interior16q.sci'); exec(PTH+'Interior19q.sci'); exec(PTH+'Interior20q.sci');
exec(PTH+'Interior21q.sci'); exec(PTH+'Interior22q.sci'); exec(PTH+'Interior23q.sci');
exec(PTH+'SciSkl.sci'); exec(PTH+'SciJust.sci'); exec(PTH+'SciQRSsum.sci');
exec(PTH+'SciAlpha.sci'); exec(PTH+'SciPQRST.sci'); exec(PTH+'SciMxtr.sci');
exec(PTH+'SciLinTrendElim.sci'); exec(PTH+'KPDE1.sci'); exec(PTH+'SciStat.sci');
exec(PTH+'SciXTEVStatistic.sci'); exec(PTH+'SciEVbearer.sci'); exec(PTH+'SciKern.sci');
exec(PTH+'SciMaxAbs.sci'); exec(PTH+'SciSwartz.sci'); exec(PTH+'SciNum2Name.sci');
exec(PTH+'SciSinhroValid.sci');
funcprot(0);
Ncase=1; while Ncase~=10; select Ncase;
//-----------------------------------------------
//ПЕРВЫЙ КЕЙС - "О ПРОГРАММЕ"
//-----------------------------------------------
case 1 then ; text_1=["Программный продукт реализует ", "патент РФ на полезную модель №
128470 (Кардиоайгеноскоп)", "Приоритет: от 09 августа 2012 г. Срок действия патента: до 09
августа 2022 г.", "Авторы: Исакевич В.В.,Исакевич Д.В., Батин А.С.",
"Патентообладатели:", "ООО «БизнесСофтСервис» - 8 (4922) 53-28-60",
"Исакевич Валерий Викторович — 8 (903) 645-27-85", "Исакевич Даннил Валерьевич — 8
(905) 140-10-16", "Балакирев Александр Николаевич — 8 (920) 903-90-30", "Батин Андрей
Сергеевич — 8 (920) 628-12-25", "Адрес для контактов:",
"businesssoftservice@gmail.com", "ИСПОЛЬЗОВАНИЕ ДАННОГО ПРОДУКТА
РЕГЛАМЕНТИРУЕТСЯ СТАТЬЁЙ 1359 ГК РФ"]; text_2='Правообладание';
messagebox(text_1, text_2); disp('1 кейс выполнен. '); Ncase=2;
//---------------------------------------------------
//ВТОРОЙ КЕЙС - НАЧАЛЬНЫЕ УСТАНОВКИ КАРДИОАЙГЕНОСКОПА
//---------------------------------------------------
case 2 then; kF=0; txt_1 = ['Усиление при записи сигналов отведений '; 'Частота дискретизации
в Гц '; 'Коэффициент децимации '; 'Синхронизировать по переднему (заднему) фронту R-
зубца (1/0)'; 'Юстировать СА (1/0)'; 'Число отсчетов НССЗ при визуализации '; 'Квантиль
порога синхронизации '; 'Диапазон юстировки (дискреты)'; 'Собственные векторы для
восстановления ЭКГ']; txt_2 = ['2000'; '1000'; '10'; '1'; '1'; '10'; '0.97'; '10'; '1:4'];
sig = x_mdialog('Начальные установки параметров обработки',txt_1,txt_2);
if sum(size(sig))~=0 then; Gain=evstr(sig(1)); F=evstr(sig(2)); Kdez=evstr(sig(3));

67
SinhroKey=evstr(sig(4)); JustSignal=evstr(sig(5)); nL=evstr(sig(6)); qS=evstr(sig(7));
DJ=evstr(sig(8)); nVosst=evstr(sig(9)); F1=F/Kdez; deltaT=1/F1;
if Kdez<5 then;Ncase=2;end; disp('2 кейс выполнен. Назначены начальные значения
переменных'); Ncase=3; else; Ncase=10; end;
//-------------------------------------------------------------
//ТРЕТИЙ КЕЙС - ВВОД ИСХОДНОГО ФАЙЛА
//-------------------------------------------------------------
case 3 then; FileName=uigetfile(["*.txt"],PTH); if FileName=='' then; Ncase=10; else; Ncase=4;
end; disp('3 кейс выполнен. Выбран файл '+FileName);
//--------------------------------------------------------------------------------------------------------------
//ЧЕТВЕРТЫЙ КЕЙС - ОТОБРАЖЕНИЕ 12 отведений и выбор синхроотведения (СО):
//--------------------------------------------------------------------------------------------------------------
case 4 then; X1 = fscanfMat(FileName); X1=X1'/Gain; X=X1(:,1:Kdez:size(X1,2));
kF=kF+1;f=figure(kF); f.figure_size = [1032,550]; f.figure_position = [-5,0]; f.figure_name ='Все
отведения'; f.background=-2; f.info_message = "Визуализация при выборе синхроотведения";
subplot(621); plot(X(1,:),'k'); ylabel('I'); a=gca();a.x_ticks.labels = [""];a.y_ticks.labels =
[""]; a.axes_visible = ["off","off","off"];a.box = "off";
subplot(622); plot(X(7,:),'k'); ylabel('V1'); a=gca();a.x_ticks.labels = [""];a.y_ticks.labels =
[""]; a.axes_visible = ["off","off","off"];a.box = "off";
subplot(623); plot(X(2,:),'k'); ylabel('II'); a=gca();a.x_ticks.labels = [""];a.y_ticks.labels =
[""]; a.axes_visible = ["off","off","off"];a.box = "off";
subplot(624); plot(X(8,:),'k'); ylabel('V2'); a=gca();a.x_ticks.labels = [""];a.y_ticks.labels =
[""]; a.axes_visible = ["off","off","off"];a.box = "off";
subplot(625); plot(X(3,:),'k'); ylabel('III'); a=gca();a.x_ticks.labels = [""];a.y_ticks.labels =
[""]; a.axes_visible = ["off","off","off"];a.box = "off";
subplot(626); plot(X(9,:),'k'); ylabel('V3'); a=gca();a.x_ticks.labels = [""];a.y_ticks.labels =
[""]; a.axes_visible = ["off","off","off"];a.box = "off";
subplot(627); plot(X(4,:),'k'); ylabel('avl'); a=gca();a.x_ticks.labels = [""];a.y_ticks.labels =
[""]; a.axes_visible = ["off","off","off"];a.box = "off";
subplot(628); plot(X(10,:),'k'); ylabel('V4'); a=gca();a.x_ticks.labels = [""];a.y_ticks.labels =
[""]; a.axes_visible = ["off","off","off"];a.box = "off";
subplot(629); plot(X(5,:),'k'); ylabel('avr'); a=gca();a.x_ticks.labels = [""];a.y_ticks.labels =
[""]; a.axes_visible = ["off","off","off"];a.box = "off";
subplot(6,2,10); plot(X(11,:),'k'); ylabel('V5'); a=gca();a.x_ticks.labels = [""];a.y_ticks.labels
= [""]; a.axes_visible = ["off","off","off"];a.box = "off";
subplot(6,2,11); plot(X(6,:),'k'); ylabel('avf'); a=gca();a.x_ticks.labels = [""];a.y_ticks.labels
= [""]; a.axes_visible = ["off","off","off"];a.box = "off";
subplot(6,2,12); plot(X(12,:),'k'); ylabel('V6'); a=gca();a.x_ticks.labels = [""];a.y_ticks.labels
= [""]; a.axes_visible = ["off","off","off"];a.box = "off";
KNOPKI= ["I" "II" "III" "avl" "avr" "avf" "V1" "V2" "V3" "V4" "V5" "V6"];
nSinhro=messagebox('Выберите синхроотведение', "modal", "question",KNOPKI); close;
if nSinhro==0 then; Ncase=10; else; Ncase=5; disp('4 кейс выполнен. Выбран интервал
обработки и параметр инвертирования'); end;
//--------------------------------------------------------------------------
//ПЯТЫЙ КЕЙС - ФОРМИРОВАНИЕ СИНХРОСИГНАЛА
//--------------------------------------------------------------------------
case 5 then; kF=kF+1; f=figure(kF); f.figure_size = [1032,550]; f.figure_position = [-5,0];
f.figure_name ='Синхроотведение - '+KNOPKI(nSinhro); f.background=-2; f.info_message =
"Выбор интервала обработки"; s=X(nSinhro,:);//временной ряд (ВР) для СО
ns=max(size(s)); plot(X(nSinhro,:)); set(gca(),"grid",[1 1]); sig=[];

68
txt_1 = ['Левая граница (в дискретах)';'Правая граница (в дискретах)'];
txt_2=['1';mtlb_num2str(ns)]; sig = x_mdialog('Выбор интервала обработки',txt_1,txt_2);
if sum(size(sig))==0 then; close;Ncase=10; else; L1=evstr(sig(1)); L2=evstr(sig(2));
s=X(nSinhro,L1:L2); [Z,Zmin,Zmax,Nmax]=SciSinhroValid(s,SinhroKey,F1,qS); Ncase=6;
disp('5 кейс выполнен. Выполнено элиминирование медленной волны:')
if SinhroKey==1 then; disp(' Синхронизация по переднему фронту R-зубца'); else; disp('
Синхронизация по заднему фронту R-зубца'); end; end;
//--------------------------------------------------------------------------------------------------------------------
//ШЕСТОЙ КЕЙС: Изображается сигнал синхроотведения с указанием оценок положения R-
зубцов; предлагается вернуться к выбору синхроотведения; при переходе к далнейшей
обпработке вводится величина КИА и интервал восстановления
//---------------------------------------------------------------------------------------------------------------------
case 6 then; close; kF=1; f=figure(kF); f.figure_size = [1032,550]; f.figure_position = [-5,0];
f.figure_name ='Оценка положения R-зубцов в синхроотведении'; f.background=-2;
f.info_message = "Используется для определения положения R-зубцов";
if JustSignal==1 then; [NmaxNew]=SciJust(Nmax,s,DJ); Nmax=NmaxNew; end;
kCAI=100; nNmax=max(size(Nmax)); aMin=min(s);aMax=max(s); plot(1:max(size(s)),s);
for i=1:nNmax;plot([Nmax(i),Nmax(i)],[aMin,aMax],'r');end;title('Результат синхронизации');
txt=["Кардиоайгеноскопия", "В начало"]; n6=messagebox('Решение о дальнейшей обработке',
"modal", "question",txt); if (n6==0)|(n6==1) then; Ncase=8;
txt_1 = ['Величина КИА в % к среднему RR-интервалу']; txt_2 =[mtlb_num2str(kCAI)];
sig = x_mdialog('Изменить КИА ?',txt_1,txt_2); if sum(size(sig))~=0 then; kCAI=evstr(sig(1));
tVmin=ceil(0.25*abs(L2-L1)); tVmax=ceil(0.5*abs(L2-L1)); Ncase=7; else; close; Ncase=10;
end; disp('6 кейс выполнен. Осуществлено определение положения R-зубцов'); else; close;
Ncase=2; end;
//-------------------------------------------------------------
//СЕДЬМОЙ КЕЙС: КАРДИОАЙГЕНОСКОПИЯ
//-------------------------------------------------------------
case 7 then; close; kF=0;
PSI1=[]; PSI2=[] PSI3=[]; PSI4=[]; PSI5=[]; PSI6=[]; EKG=[]; Q=[]; Q1=[]; Q2=[]; LNSSZ=[];
for i=1:12; if i==1 then; disp("1-I "); elseif i==2; disp("2-II "); elseif i==3; disp("3-III "); elseif
i==4; disp("4-aVR "); elseif i==5; disp("5-aVL "); elseif i==6; disp("6-aVF "); elseif i==7; disp("7-
V1 "); elseif i==8; disp("8-V2 "); elseif i==9; disp("9-V3 "); elseif i==10; disp("10-V4 "); elseif
i==11; disp("11-V5 "); elseif i==12; disp("12-V6 "); end;
s=X(i,L1:L2); kTL=ceil(kCAI*Z/200)+1; kTR=ceil(kCAI*Z/200)+1;
[T,Nmax1]=SciAnsambl(Nmax,s,kTL,kTR); T=SciLinTrendElim(T); OtvSA(i).SA=T;
K=T'*T; [p,l,u]=svd(K); l=diag(l);l=l'; l=l/sum(l); PSI1=[PSI1;p(:,1)']; PSI2=[PSI2;p(:,2)'];
PSI3=[PSI3;p(:,3)']; PSI4=[PSI4;p(:,4)']; PSI5=[PSI5;p(:,5)']; PSI6=[PSI6;p(:,6)'];
kEV=1; T1=T*p(:,kEV)*p(:,kEV)'; kErr=2; T2=T*p(:,kErr)*p(:,kErr)';
Tvosst=T*p(:,nVosst)*p(:,nVosst)';/ meanT1=mean(T1,'r'); meanT2=mean(T2,'r');
msdT=sqrt(mean(T2.^2,'r')); Q=[Q;meanT1]; Q1=[Q1;meanT2]; Q2=[Q2;msdT];
LNSSZ=[LNSSZ;l(1:nL)];
//ВОССТАНОВЛЕНИЕ СЕГМЕНТА ЭКГ
//На основании выбранных в 6 кейсе значений (в дискретах) границ участка воосстановления
ЭКГ
//происходи выделение из последовательности положений R-зубцов Nmax
//тех R-зубцов, которые лежат между tVmin и tVmax

Nvosst=Nmax((Nmax>tVmin)&(Nmax<tVmax)); //матрица-строа - содержит дискретные


моменты времени,

69
//соответствующие R-зубцам в указанных границах
nNvosst=max(size(Nvosst));//длина матрицы строки Nvosst = числу R-зубцов на интервале
tVmin - tVmax
nTVosst=size(TVosst,2);//величина КИА
//Следующий ниже цикл имеет своей целью определение в последовательности Nmax номера
//первого по порядку R-зубца на интервале tVmin - tVmax
// Так как нумерация зубцов в последовательности Nmax совпадает с нумерацией
//ЭСА в восстановленном ансамбле TVosst, это позволяет "привинтить" ЭСА на нужное место
for i=1:max(size(Nmax))//цикл по положениям R-зубцов, записанным в матрицу-строку Nmax
if Nmax(i)==Nvosst(1) then //Еслис положение i-го R-зубца совпадает с положением
первого зубца
//на интервале tVmin - tVmax (первый элемент матрицы-строки Nvosst),
k=i;//то запоминаем номер первого зубца на интервале в последовательности Nmax
end//конец условия проверки
end//конец цикла
for j=1:nNvosst//перебираем "оси" по порядку
NN1=Nvosst(j)-Nvosst(1)+1;//начальная точка (k+j)-го ЭСА на j-ой "оси"
NN2=NN1+nTVosst-1;//конечная точка (k+j)-го ЭСА на j-ой "оси"
A(j,NN1:NN2)=TVosst(k+j,:);//на "ось" наносится ЭСА
end//конец перебора
EKGi=sum(A,'r');//суммируем по "осям"
EKG=[EKG;EKGi];//накопление восстановленных ЭКГ в разных отведениях
end//окончание цикла обработки отведений
Ncase=8;disp('7 кейс выполнен. Произведена кардиоайгеноскопия')
//--------------------------------------------------------------------------------------------------
//ВОСЬМОЙ КЕЙС: ПРИНЯТИЕ РЕШЕНИЯ О РЕЖИМЕ ВИЗУАЛИЗАЦИИ.
//--------------------------------------------------------------------------------------------------
case 8 then; txt_1 = ['Alias'; 'Типичные представители СА (СВ №1) во ФО (1/0)'; 'Типичные
представители СА (СВ №1) в ГО (1/0)'; 'Типичные представители АМА (СВ №2) во ФО (1/0)';
'Типичные представители АМА (СВ №2) в ГО (1/0)'; 'Первая компонента во ФО (1/0)';...
'Первая компонента в ГО (1/0)'; 'Вторая компонента во ФО (1/0)'; 'Вторая компонента в ГО
(1/0)'; 'СК микроальтернации во ФО (1/0)';
'СК микроальтернации в ГО (1/0)'; 'Первая компонента для II, III, V1, V6 (1/0)'; 'Первая
компонента для I, II, III, avl, avr, avf (1/0)'; 'Первая компонента - все отведения (1/0)';...
'Первая компонента для I, II, III (1/0)'; 'Первая компонента для avl, V5, V6 (1/0)';...
'Первая компонента для avf, II, III (1/0)'; 'Первая компонента для I, II, avf, V4, V5, V6 (1/0)';
'Первая компонента для II (1/0)'; 'Восстановление ЭКГ во ФО (1/0)'; 'Восстановление ЭКГ в
ГО (1/0)'; 'Восст-ние ЭКГ во II отведении (1/0)'; 'Восстановление ЭКГ в II, III, avf (1/0)';...
'Восстановление ЭКГ в V1, V2, V5, V6 (1/0)'; 'Статистики 1-ой и 2-oй компоненты (1/0)';...
'Статистики 1-ой и 3-oй компоненты (1/0)'; 'Статистики 1-ой и 4-oй компоненты (1/0)';...
'Наиболее вероятный PQRST (1/0)'; '4 компоненты и ЭСА'; 'Статистики угла между ТП и
ЭСА']; txt_2 =['Имярек'; '0'; '0'; '0'; '0'; '0'; '0'; '0'; '0'; '0'; '0'; '0'; '0'; '0'; '0'; '0'; '0'; '0'; '0'; '0'; '0'; '0';
'0'; '0'; '0'; '0'; '0'; '0'; '0'; '0']; sig = x_mdialog('Введите режим визуализации',txt_1,txt_2);

if sum(size(sig))==0 then; Ncase=8; else; Alias=sig(1); keyVisio_1=evstr(sig(2));


keyVisio_2=evstr(sig(3)); keyVisio_3=evstr(sig(4)); keyVisio_4=evstr(sig(5));
keyVisio_5=evstr(sig(6)); keyVisio_6=evstr(sig(7)); keyVisio_7=evstr(sig(8));
keyVisio_8=evstr(sig(9)); keyVisio_9=evstr(sig(10)); keyVisio_10=evstr(sig(11));
keyVisio_15=evstr(sig(12)); keyVisio_16=evstr(sig(13)); keyVisio_17=evstr(sig(14));
keyVisio_18=evstr(sig(15)); keyVisio_19=evstr(sig(16)); keyVisio_20=evstr(sig(17));

70
keyVisio_21=evstr(sig(18)); keyVisio_22=evstr(sig(19)); keyVisio_23=evstr(sig(20));
keyVisio_24=evstr(sig(21)); keyVisio_25=evstr(sig(22)); keyVisio_26=evstr(sig(23));
keyVisio_27=evstr(sig(24)); keyVisio_28=evstr(sig(25)); keyVisio_29=evstr(sig(26));
keyVisio_30=evstr(sig(27)); keyVisio_31=evstr(sig(28)); keyVisio_32=evstr(sig(29));
keyVisio_33=evstr(sig(30)); Ncase=9; disp('8 кейс выполнен.'); end;
//--------------------------------------------------
//ДЕВЯТЫЙ КЕЙС: ВИЗУАЛИЗАЦИЯ
//--------------------------------------------------
case 9 then; tEV=1000*(1:size(Q,2))*deltaT; a=PSI1(nSinhro,:);if max(a)~=max(abs(a)) then a=-
a;end; V.XS=a;
//----------------------------------------------------------
//Типичные представители СА (СВ №1) во ФО
//----------------------------------------------------------
if keyVisio_1==1 then
V.t1F=tEV;V.t2F=tEV;V.t3F=tEV;V.t5F=tEV;V.t4F=tEV;V.t6F=tEV;//время в мсек.
a=PSI1(1,:);if max(a)~=max(abs(a)) then a=-a;end;V.X1=a;
a=PSI1(2,:);if max(a)~=max(abs(a)) then a=-a;end;V.X2=a;
a=PSI1(3,:);if max(a)~=max(abs(a)) then a=-a;end;V.X3=a;
a=PSI1(4,:);if max(a)~=max(abs(a)) then a=-a;end;V.Xavr=a;
a=PSI1(5,:);if max(a)~=max(abs(a)) then a=-a;end;V.Xavl=a;
a=PSI1(5,:);if max(a)~=max(abs(a)) then a=-a;end;V.Xavf=a;
a=PSI1(nSinhro,:);if max(a)~=max(abs(a)) then a=-a;end; V.XS=a;
V.LI=100*LNSSZ(1,:); V.LII=100*LNSSZ(2,:); V.LIII=100*LNSSZ(3,:);
V.Lavl=100*LNSSZ(5,:); V.Lavr=100*LNSSZ(4,:); V.Lavf=100*LNSSZ(6,:);
kF=Interior01q(V,kF,Alias+'/ТП СА — сек.;о.е.',0); end;
//--------------------------------------------------------
//Типичные представители СА (СВ №1) в ГО
//--------------------------------------------------------
if keyVisio_2==1 then
V.t1B=tEV;V.t2B=tEV;V.t3B=tEV;V.t4B=tEV;V.t5B=tEV;V.t6B=tEV;
a=PSI1(7,:);if max(a)~=max(abs(a)) then a=-a;end;V.V1=a;
a=PSI1(8,:);if max(a)~=max(abs(a)) then a=-a;end;V.V2=a;
a=PSI1(9,:);if max(a)~=max(abs(a)) then a=-a;end;V.V3=a;
a=PSI1(10,:);if max(a)~=max(abs(a)) then a=-a;end;V.V4=a;
a=PSI1(11,:);if max(a)~=max(abs(a)) then a=-a;end;V.V5=a;
a=PSI1(12,:);if max(a)~=max(abs(a)) then a=-a;end;V.V6=a;
a=PSI1(nSinhro,:);if max(a)~=max(abs(a)) then a=-a;end; V.XS=a;
V.LV1=100*LNSSZ(7,:); V.LV2=100*LNSSZ(8,:); V.LV3=100*LNSSZ(9,:);
V.LV4=100*LNSSZ(10,:); V.LV5=100*LNSSZ(11,:); V.LV6=100*LNSSZ(12,:);
kF=Interior02q(V,kF,Alias+'/ТП СА — сек.;о.е.'); end;
//-------------------------------------------------------------
//Типичные представители АМА (СВ №2) во ФО
//-------------------------------------------------------------
if keyVisio_3==1 then
V.t1F=tEV;V.t2F=tEV;V.t3F=tEV;V.t5F=tEV;V.t4F=tEV;V.t6F=tEV;
a=PSI2(1,:);if max(a)~=max(abs(a)) then a=-a;end;V.X1=a;
a=PSI2(2,:);if max(a)~=max(abs(a)) then a=-a;end;V.X2=a;
a=PSI2(3,:);if max(a)~=max(abs(a)) then a=-a;end;V.X3=a;
a=PSI2(4,:);if max(a)~=max(abs(a)) then a=-a;end;V.Xavr=a;
a=PSI2(5,:);if max(a)~=max(abs(a)) then a=-a;end;V.Xavl=a;

71
a=PSI2(5,:);if max(a)~=max(abs(a)) then a=-a;end;V.Xavf=a;
a=PSI1(nSinhro,:);if max(a)~=max(abs(a)) then a=-a;end; V.XS=a;
V.LI=100*LNSSZ(1,:); V.LII=100*LNSSZ(2,:); V.LIII=100*LNSSZ(3,:);
V.Lavl=100*LNSSZ(5,:); V.Lavr=100*LNSSZ(4,:); V.Lavf=100*LNSSZ(6,:);
kF=Interior01qA(V,kF,Alias+'/ТП АМА — сек.;о.е.',0); end;
//-----------------------------------------------------------
//Типичные представители АМА (СВ №2) в ГО
//-----------------------------------------------------------
if keyVisio_4==1 then
V.t1B=tEV;V.t2B=tEV;V.t3B=tEV;V.t4B=tEV;V.t5B=tEV;V.t6B=tEV;
a=PSI2(7,:);if max(a)~=max(abs(a)) then a=-a;end;V.V1=a;
a=PSI2(8,:);if max(a)~=max(abs(a)) then a=-a;end;V.V2=a;
a=PSI2(9,:);if max(a)~=max(abs(a)) then a=-a;end;V.V3=a;
a=PSI2(10,:);if max(a)~=max(abs(a)) then a=-a;end;V.V4=a;
a=PSI2(11,:);if max(a)~=max(abs(a)) then a=-a;end;V.V5=a;
a=PSI2(12,:);if max(a)~=max(abs(a)) then a=-a;end;V.V6=a;
a=PSI1(nSinhro,:);if max(a)~=max(abs(a)) then a=-a;end; V.XS=a;
V.LV1=100*LNSSZ(7,:); V.LV2=100*LNSSZ(8,:); V.LV3=100*LNSSZ(9,:);
V.LV4=100*LNSSZ(10,:); V.LV5=100*LNSSZ(11,:); .LV6=100*LNSSZ(12,:);
kF=Interior02qA(V,kF,Alias+'/ТП АМА — сек.;о.е.'); end;
//----------------------------------------------------------------------------------------------------------
//Первая компонента и ее статистики (минимум, среднее и максимум для ХТ) во ФО
//----------------------------------------------------------------------------------------------------------
if keyVisio_5==1 then
tEV=(1:size(Q,2))*deltaT;
V.t1F=tEV;V.t2F=tEV;V.t3F=tEV;V.t4F=tEV;V.t5F=tEV;V.t6F=tEV;
[bpsi,abscisa]=SciEVbearer(PSI1(1,:));V.X1=bpsi;V.A1=abscisa;
[bpsi,abscisa]=SciEVbearer(PSI1(2,:));V.X2=bpsi;V.A2=abscisa;
[bpsi,abscisa]=SciEVbearer(PSI1(3,:));V.X3=bpsi;V.A3=abscisa;
[bpsi,abscisa]=SciEVbearer(PSI1(4,:));V.Xavr=bpsi;V.A4=abscisa;
[bpsi,abscisa]=SciEVbearer(PSI1(5,:));V.Xavl=bpsi;V.A5=abscisa;
[bpsi,abscisa]=SciEVbearer(PSI1(6,:));V.Xavf=bpsi;V.A6=abscisa;
Min=zeros(1,12);Max=zeros(1,12);Mean=zeros(1,12);
for i=1:6; [a,b,c,d,e,f]=SciXTEVStatistic(OtvSA,PSI1,i); Mean(i)=b; Min(i)=c; Max(i)=d; end;
V.LI=100*LNSSZ(1,:);V.LII=100*LNSSZ(2,:);V.LIII=100*LNSSZ(3,:);
V.Lavl=100*LNSSZ(5,:);V.Lavr=100*LNSSZ(4,:);V.Lavf=100*LNSSZ(6,:);
V.XS=Q(nSinhro,:);
kF=Interior01qC(V,kF,Alias+'/1-комп. - мВ',Min,Mean,Max); end;
//--------------------------------------------------------------------------------------------------------
//Первая компонента и ее статистики (минимум, среднее и максимум для ХТ) в ГО
//--------------------------------------------------------------------------------------------------------
if keyVisio_6==1 then
tEV=(1:size(Q,2))*deltaT;
V.t1B=tEV;V.t2B=tEV;V.t3B=tEV;V.t4B=tEV;V.t5B=tEV;V.t6B=tEV;
[bpsi,abscisa]=SciEVbearer(PSI1(7,:));V.V1=bpsi;V.A1=abscisa;
[bpsi,abscisa]=SciEVbearer(PSI1(8,:));V.V2=bpsi;V.A2=abscisa;
[bpsi,abscisa]=SciEVbearer(PSI1(9,:));V.V3=bpsi;V.A3=abscisa;
[bpsi,abscisa]=SciEVbearer(PSI1(10,:));V.V4=bpsi;V.A4=abscisa;
[bpsi,abscisa]=SciEVbearer(PSI1(11,:));V.V5=bpsi;V.A5=abscisa;
[bpsi,abscisa]=SciEVbearer(PSI1(12,:));V.V6=bpsi;V.A6=abscisa;

72
Min=zeros(1,12);Max=zeros(1,12);Mean=zeros(1,12);
for i=7:12; [a,b,c,d,e,f]=SciXTEVStatistic(OtvSA,PSI1,i); Mean(i)=b; Min(i)=c; Max(i)=d; end;
V.LV1=100*LNSSZ(7,:);V.LV2=100*LNSSZ(8,:);V.LV3=100*LNSSZ(9,:);
V.LV4=100*LNSSZ(10,:);V.LV5=100*LNSSZ(11,:);V.LV6=100*LNSSZ(12,:);
V.XS=Q(nSinhro,:);
kF=Interior02qC(V,kF,Alias+'/1-комп. - мВ',Min,Mean,Max); end;
//------------------------------------------------------
//Вторая компонента во ФО и ее статистики
//------------------------------------------------------
if keyVisio_7==1 then
tEV=(1:size(Q,2))*deltaT;
V.t1F=tEV;V.t2F=tEV;V.t3F=tEV;V.t4F=tEV;V.t5F=tEV;V.t6F=tEV;
[bpsi,abscisa]=SciEVbearer(PSI2(1,:));V.X1=bpsi;V.A1=abscisa;
[bpsi,abscisa]=SciEVbearer(PSI2(2,:));V.X2=bpsi;V.A2=abscisa;
[bpsi,abscisa]=SciEVbearer(PSI2(3,:));V.X3=bpsi;V.A3=abscisa;
[bpsi,abscisa]=SciEVbearer(PSI2(4,:));V.Xavr=bpsi;V.A4=abscisa;
[bpsi,abscisa]=SciEVbearer(PSI2(5,:));V.Xavl=bpsi;V.A5=abscisa;
[bpsi,abscisa]=SciEVbearer(PSI2(6,:));V.Xavf=bpsi;V.A6=abscisa;
Min=zeros(1,12);Max=zeros(1,12);Mean=zeros(1,12);
for i=1:6; [a,b,c,d,e,f]=SciXTEVStatistic(OtvSA,PSI2,i); Mean(i)=b; Min(i)=c; Max(i)=d; end;
V.LI=100*LNSSZ(1,:);V.LII=100*LNSSZ(2,:);V.LIII=100*LNSSZ(3,:);
V.Lavl=100*LNSSZ(5,:);V.Lavr=100*LNSSZ(4,:);V.Lavf=100*LNSSZ(6,:);
V.XS=Q(nSinhro,:);
kF=Interior01qC2(V,kF,Alias+'/2-ая комп. - мВ',Min,Mean,Max); end;
//----------------------------------------------------
//Вторая компонента в ГО и ее статистики
//----------------------------------------------------
if keyVisio_8==1 then
tEV=(1:size(Q,2))*deltaT;//дискретное время в секундах (deltaT - дискрет в секундах)
V.t1B=tEV;V.t2B=tEV;V.t3B=tEV;V.t4B=tEV;V.t5B=tEV;V.t6B=tEV;
[bpsi,abscisa]=SciEVbearer(PSI2(7,:));V.V1=bpsi;V.A1=abscisa;
[bpsi,abscisa]=SciEVbearer(PSI2(8,:));V.V2=bpsi;V.A2=abscisa;
[bpsi,abscisa]=SciEVbearer(PSI2(9,:));V.V3=bpsi;V.A3=abscisa;
[bpsi,abscisa]=SciEVbearer(PSI2(10,:));V.V4=bpsi;V.A4=abscisa;
[bpsi,abscisa]=SciEVbearer(PSI2(11,:));V.V5=bpsi;V.A5=abscisa;
[bpsi,abscisa]=SciEVbearer(PSI2(12,:));V.V6=bpsi;V.A6=abscisa;
Min=zeros(1,12);Max=zeros(1,12);Mean=zeros(1,12);
for i=7:12; [a,b,c,d,e,f]=SciXTEVStatistic(OtvSA,PSI2,i); Mean(i)=b; Min(i)=c; Max(i)=d; end;
V.LV1=100*LNSSZ(1,:);V.LV2=100*LNSSZ(2,:);V.LV3=100*LNSSZ(3,:);
V.LV4=100*LNSSZ(5,:);V.LV5=100*LNSSZ(4,:);V.LV6=100*LNSSZ(6,:);V.XS=Q(nSinhro,:);
kF=Interior02qC2(V,kF,Alias+'/2-ая комп. - мВ',Min,Mean,Max); end;
//----------------------------------------------------------------
//Средние типичные СКО микроальтернации во ФО
//----------------------------------------------------------------
if keyVisio_9==1 then
V.t1F=tEV;V.X1=Q2(1,:);V.t2F=tEV;V.X2=Q2(2,:);V.t3F=tEV;V.X3=Q2(3,:);
V.t5F=tEV;V.Xavr=Q2(4,:);V.t4F=tEV;V.Xavl=Q2(5,:);V.t6F=tEV;V.Xavf=Q2(6,:);
V.LI=100*LNSSZ(7,:);V.LII=100*LNSSZ(8,:);V.LIII=100*LNSSZ(9,:);
V.Lavl=100*LNSSZ(10,:);V.Lavr=100*LNSSZ(11,:);V.Lavf=100*LNSSZ(12,:);
V.XS=Q(nSinhro,:);

73
kF=Interior01qS(V,kF,Alias+'/СКО МА — мВ'); end;
//--------------------------------------------------------------
//Средние типичные СКО микроальтернации в ГО
//--------------------------------------------------------------
if keyVisio_10==1 then
V.t1B=tEV;V.V1=Q2(7,:);V.t2B=tEV;V.V2=Q2(8,:);V.t3B=tEV;V.V3=Q2(9,:);
V.t4B=tEV;V.V4=Q2(10,:);V.t5B=tEV;V.V5=Q2(11,:);V.t6B=tEV;V.V6=Q2(12,:);
V.LV1=100*LNSSZ(7,:);V.LV2=100*LNSSZ(8,:);V.LV3=100*LNSSZ(9,:);
V.LV4=100*LNSSZ(10,:);V.LV5=100*LNSSZ(11,:);V.LV6=100*LNSSZ(12,:);
V.XS=Q(nSinhro,:);
kF=Interior02qS(V,kF,Alias+'/СКО МА — мВ'); end;
//-----------------
// II, III, V1, V6
//-----------------
if keyVisio_15==1 then
V.t2F=tEV;V.X2=Q(2,:); V.t3F=tEV;V.X3=Q(3,:); V.t1B=tEV;V.V1=Q(7,:);
V.t6B=tEV;V.V6=Q(12,:); V.LII=100*LNSSZ(2,:); V.LIII=100*LNSSZ(3,:);
V.LV1=100*LNSSZ(7,:); V.LV6=100*LNSSZ(12,:);
kF=Interior04q(V,kF,Alias+'/1-ая комп. - мВ'); end;
//--------------------------
// I, II, III, avl, avr, avf
//--------------------------
if keyVisio_16==1 then
V.t1F=tEV;V.X1=Q(1,:); V.t2F=tEV;V.X2=Q(2,:); V.t3F=tEV;V.X3=Q(3,:);
V.t4F=tEV;V.Xavl=Q(4,:); V.t5F=tEV;V.Xavr=Q(5,:); V.t6F=tEV;V.Xavf=Q(6,:);
V.LI=100*LNSSZ(1,:);V.LII=100*LNSSZ(2,:);V.LIII=100*LNSSZ(3,:);
V.Lavl=100*LNSSZ(5,:);V.Lavr=100*LNSSZ(4,:);V.Lavf=100*LNSSZ(6,:);
kF=Interior05q(V,kF,Alias+'/ТП — мВ'); end;
V.t1F=tEV;V.X1=Q(1,:);V.t2F=tEV;V.X2=Q(2,:);V.t3F=tEV;V.X3=Q(3,:);
V.t5F=tEV;V.Xavr=Q(4,:);V.t4F=tEV;V.Xavl=Q(5,:);V.t6F=tEV;V.Xavf=Q(6,:);
V.LI=100*LNSSZ(1,:);V.LII=100*LNSSZ(2,:);V.LIII=100*LNSSZ(3,:);
V.Lavl=100*LNSSZ(5,:);V.Lavr=100*LNSSZ(4,:);V.Lavf=100*LNSSZ(6,:);
V.t1B=tEV;V.V1=Q(7,:);V.t2B=tEV;V.V2=Q(8,:);V.t3B=tEV;V.V3=Q(9,:);
V.t4B=tEV;V.V4=Q(10,:);V.t5B=tEV;V.V5=Q(11,:);V.t6B=tEV;V.V6=Q(12,:);
V.LV1=100*LNSSZ(7,:);V.LV2=100*LNSSZ(8,:);V.LV3=100*LNSSZ(9,:);
V.LV4=100*LNSSZ(10,:);V.LV5=100*LNSSZ(11,:);V.LV6=100*LNSSZ(12,:);
//-------------------
// Все отведения
//-------------------
if keyVisio_17==1 then
kF=Interior06q(V,kF,Alias+'/1-ая комп. - мВ'); end;
//----------
// I, II, III
//----------
if keyVisio_18==1 then
kF=Interior07q(V,kF,Alias+'/1-ая комп. - мВ'); end;
//--------------
// avl, V5, V6
//--------------
if keyVisio_19==1 then

74
kF=Interior08q(V,kF,Alias+'/1-ая комп. - мВ'); end
//-----------
// avf, II, III
//-------------
if keyVisio_20==1 then
kF=Interior09q(V,kF,Alias+'/1-ая комп. - мВ'); end;
//-------------------------
//I, II, avf, V4, V5, V6
//-------------------------
if keyVisio_21==1 then
kF=Interior12q(V,kF,Alias+'/1-ая комп. - мВ'); end;
//-----
//II
//-----
if keyVisio_22==1 then
kF=Interior16q(V,kF,Alias+'/1-ая комп. - мВ'); end;
//------------------------------------
//Восстановление ЭКГ во ФО
//------------------------------------
if keyVisio_23==1 then
tEKG=1:size(EKG,2); V.t1F=tEKG*deltaT;V.X1=EKG(1,tEKG);
V.t2F=tEKG*deltaT;V.X2=EKG(2,tEKG); V.t3F=tEKG*deltaT;V.X3=EKG(3,tEKG);
V.t4F=tEKG*deltaT;V.Xavr=EKG(4,tEKG); V.t5F=tEKG*deltaT;V.Xavl=EKG(5,tEKG);
V.t6F=tEKG*deltaT;V.Xavf=EKG(6,tEKG);
kF=Interior10q(V,kF,''); end;
//----------------------------------
//Восстановление ЭКГ в ГО
//----------------------------------
if keyVisio_24==1 then
tEKG=1:size(EKG,2); V.t1B=tEKG*deltaT;V.V1=EKG(7,tEKG);
V.t2B=tEKG*deltaT;V.V2=EKG(8,tEKG); V.t3B=tEKG*deltaT;V.V3=EKG(9,tEKG);
V.t4B=tEKG*deltaT;V.V4=EKG(10,tEKG); V.t5B=tEKG*deltaT;V.V5=EKG(11,tEKG);
V.t6B=tEKG*deltaT;V.V6=EKG(12,tEKG);
kF=Interior11q(V,kF,''); end;
//--------------------------------
//Восстановление ЭКГ в II
//--------------------------------
if keyVisio_25==1 then
tEKG=1:size(EKG,2); V.t2F=tEKG*deltaT;V.X2=EKG(2,tEKG);
kF=Interior13q(V,kF,''); end;
//------------------------------------------
//Восстановление ЭКГ в II, III, avf
//------------------------------------------
if keyVisio_26==1 then
tEKG=1:size(EKG,2); V.t2F=tEKG*deltaT;V.X2=EKG(2,tEKG);
V.t3F=tEKG*deltaT;V.X3=EKG(3,tEKG); V.t6F=tEKG*deltaT;V.Xavf=EKG(6,tEKG);
kF=Interior14q(V,kF,''); end;
//-------------------------------------------------
//Восстановление ЭКГ в V1, V2, V5, V6
//-------------------------------------------------

75
if keyVisio_27==1 then
tEKG=1:size(EKG,2); V.t1B=tEKG*deltaT;V.V1=EKG(7,tEKG);
V.t2B=tEKG*deltaT;V.V2=EKG(8,tEKG); V.t5B=tEKG*deltaT;V.V5=EKG(11,tEKG);
V.t6B=tEKG*deltaT;V.V6=EKG(12,tEKG);
kF=Interior15q(V,kF,''); end;
//-------------------------------------------------------------------
//Визуализация статистик первой и второй компонент
//-------------------------------------------------------------------
if keyVisio_28==1 then
txt_1=['На разных графиках (1/0)';'На одном графике (1/0)']; txt_2=['0';'0']; sig =
x_mdialog('Отобразить 1-ую и 2-ую компоненты и их статистики',txt_1,txt_2);
if eval(sig(1))==1 then; kF=Interior19q(kF,OtvSA,PSI1,PSI2,Alias); end;
if eval(sig(2))==1 then; kF=Interior20q(kF,OtvSA,PSI1,PSI2,Alias); end; end;
//----------------------------------------------------------------------
//Визуализация статистик первой и третьей компоненты
//----------------------------------------------------------------------
if keyVisio_29==1 then; kF=Interior21q(kF,OtvSA,PSI1,PSI3,Alias); end;
//-------------------------------------------------------------
//Визуализация статистик четвертой компоненты
//-------------------------------------------------------------
if keyVisio_30==1 then; kF=Interior22q(kF,OtvSA,PSI1,PSI4,Alias); end;
//---------------------------------------------------------
//Визуализация вариабельности PQRST-цикла
//---------------------------------------------------------
if keyVisio_31==1 then; kF=Interior23q(kF,OtvSA,PSI1,PSI2,PSI3,PSI4,Alias); end;
//---------------------------
//4 компоненты и ЭСА
//---------------------------
if keyVisio_32==1 then; exec(PTH+'Bro2.sce'); end;
//---------------------------------------------
//статистики углов между ТП и ЭСА
//---------------------------------------------
if keyVisio_33==1 then; exec(PTH+'Bro4.sce'); end; disp('9 кейс выполнен.');
txt=["Продолжить визуализацию", "Закончить работу"];
n10=messagebox('Решение о дальнейшей обработке', "modal", "question",txt);
if n10 == 1 then; Ncase=8; end; if (n10 == 2) | (n10 == 0) then; Ncase=10; end;
case 10 then; disp('Работа закончена.'); end; end;

SciKVANT.sci
function Xq=SciKVANT(x,qS)
// Определяет квантиль [Xq] порядка [q] для матрицы строки [x] и порог — на основании
функции распределения [x]
[X,Y]=SciFR(x); ns=size(X,2);Xq=X(ceil(qS*ns));
endfunction;

SciFR.sci
function [X,Y]=SciFR(x)
// Оценка ФР
X=gsort(x,'g','i');ns=size(X,2);Y=(1:ns)/ns;

76
endfunction;

SciSinhroValid.sci
function [Zmean,Zmin,Zmax,Nmax]=SciSinhroValid(s,SinhroKey,F1,qS)
//Предназначена для синхронизации (устранение МВ и формирование положительного
синхроимпуьсов на месте переднего фронта R-зубца, - если SinhroKey==1, или задднего
фронта, -если SinhroKey==0
nf=ceil(0.03*F1);SV=conv(s,[ones(1,nf),-ones(1,nf)]);
nSV=length(SV);nSV=nSV-2*nf;
SV=SV(1:nSV);
if SinhroKey==1 then;for i=1:nSV;if SV(i)<0 then;SV(i)=0;end;end;
elseif SinhroKey==0;SV=-SV;for i=1:nSV;if SV(i)<0 then;SV(i)=0;end;end;end;
Mdn=SciKVANT(SV,qS);for i=1:nSV; if SV(i) < Mdn then; SV(i)=0;end; end;
Por=mean(SV);Nmax=[];for i=1:(nSV-1);if (SV(i)<Por)&(SV(i+1)>Por)
then;Nmax=[Nmax,i];end;end;
nNmax=max(size(Nmax));Nmax=Nmax(2:(nNmax-1));nNmax=max(size(Nmax));
for i=1:(nNmax-1);x(i)=Nmax(i+1)-Nmax(i);end;
Zmean=mean(x);Zmin=min(x);Zmax=max(x);
endfunction;

SciAnsambl.sci
function [T,Nmax1]=SciAnsambl(Nmax,x,ZLeft,ZRight)
////Формируем СА
//Nmax - матрица строка положения R- зубцов
//x - сигнал отведения ЭКГ
//ZLeft - число отсчетов слева
//ZRight- число отсчетов справа
T=[];//накопитель ансамбля (построчно)
Nmax1=[];//накопитель максимумов
for i=1:max(size(Nmax))
if ((Nmax(i)-ZLeft)>0) & ((Nmax(i)+ZRight))<=max(size(x) ) then
T=[T;x((Nmax(i)-ZLeft):(Nmax(i)+ZRight))];
Nmax1=[Nmax1 Nmax(i)];
end;
end;
endfunction

Interior01q.sci
function kF=Interior01q(V,kF,StrDop,Min,Mean,Max)
//Возвращает фронтальные отведения. V.t1...V.t6 - дискретное время (в мсек).V.X1; V.X2;
V.X3; V.Xavl; V.Xavr; V.Xavf - сигналы (мВ) в отведениях. kF - номер фигуры. StrDop -
строчная переменная. Min,Mean,Max — статистики ХТ.
Lthickness=2;//Толщина линий графиков
t1=V.t1F;X1=V.X1; t2=V.t2F;X2=V.X2; t3=V.t3F;X3=V.X3; t4=V.t4F;X4=V.Xavl;
t5=V.t5F;X5=V.Xavr; t6=V.t6F;X6=V.Xavf; //распаковка отведений
LI=V.LI; LII=V.LII; LIII=V.LIII; Lavl=V.Lavl; Lavr=V.Lavr; Lavf=V.Lavf;
nLI=1:size(LI,2); nLII=1:size(LII,2); nLIII=1:size(LIII,2); nLavl=1:size(Lavl,2);
nLavr=1:size(Lavr,2); nLavf=1:size(Lavf,2);//распаковка НССЗ
W=max(abs([X1 X2 X3 X4 X5 X6])); [Amax,Amin]=SciSkl(W);//Масштабирование

77
XS=V.XS; [a,b]=max(abs(XS)); //приведение к началу отсчета по максимуму в СО
t1=(t1-t1(b))/1000; t2=(t2-t2(b))/1000; t3=(t3-t3(b))/1000; t4=(t4-t4(b))/1000;
t5=(t5-t5(b))/1000; t6=(t6-t6(b))/1000; deltaT=t1(2)-t1(1);
kF=kF+1;f=figure(kF); f.figure_size = [1032,550]; f.figure_position = [-5,0]; f.figure_name
='Типичные представители во фронтальных отведениях'; f.background=-2; f.info_message =
"Interior01q";
subplot(241);title('I'); plot(t1-t1(b),X1,'k',t1(b),Amin,'^r',t1(b),Amax,'vy'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t1) max(t1) Amin Amax];
subplot(242);title('II'); plot(t2,X2,'k',t2(b),Amin,'^r',t2(b),Amax,'vg'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t2) max(t2) Amin Amax];
subplot(243);title('III'); plot(t3,X3,'k',t3(b),Amin,'^y',t3(b),Amax,'vg'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t3) max(t3) Amin Amax];
subplot(244);plot(nLI,LI,'vk', nLII,LII,'ok', nLIII,LIII,'^k'); a=legend('I','II','III'); a.background=-
2; a.foreground=-2; a.font_color = -1; a.font_size=3; plot(nLI,LI,'k', nLII,LII,'k', nLIII,LIII,'k');
title(StrDop); xlabel('Номер компоненты');ylabel('Энергетический вклад,%');
set(gca(),"grid",[1 1]); a=get("current_axes"); a.title.font_size=3; a.y_label.font_size=3;
a.x_label.font_size=3; p1=a.children; p2=p1.children; p2.thickness=Lthickness;
set(gca(),"font_size",3);
subplot(245); title('avl'); plot(t4,X4,'k',t4(b),Amin,'^k',t4(b),Amax,'vy'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3;p1=a.children; p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t4) max(t4) Amin Amax];
subplot(246); title('avr');plot(t5,X5,'k',t5(b),Amin,'^k',t5(b),Amax,'vr'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t5) max(t5) Amin Amax];
subplot(247); title('avf'); plot(t6,X6,'k',t6(b),Amin,'^k',t6(b),Amax,'vg'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t6) max(t6) Amin Amax];
subplot(248);plot(nLavl,Lavl,'vk', nLavr,Lavr,'ok',nLavf,Lavf,'^k'); xlabel('Номер
компоненты'); ylabel('Энергетический вклад,%'); set(gca(),"grid",[1 1]);
a=legend('avl','avr','avf');a.background=-2; a.foreground=-2; a.font_color = -1; a.font_size=3;
plot(nLavl,Lavl,'k', nLavr,Lavr,'k',nLavf,Lavf,'k'); a=get("current_axes"); a.title.font_size=3;
a.y_label.font_size=3; p1=a.children; p2=p1.children; p2.thickness=Lthickness;
set(gca(),"font_size",3);
endfunction

Interior01qA.sci
function kF=Interior01qA(V,kF,StrDop,Min,Mean,Max)
// Типичные микроальтернации во фронтальных отведениях
Lthickness=2;//Толщина линий графиков
t1=V.t1F;X1=V.X1; t2=V.t2F;X2=V.X2; t3=V.t3F;X3=V.X3; t4=V.t4F;X4=V.Xavl;
t5=V.t5F;X5=V.Xavr; t6=V.t6F;X6=V.Xavf;//распаковка отведений
LI=V.LI;LII=V.LII;LIII=V.LIII; Lavl=V.Lavl; Lavr=V.Lavr; Lavf=V.Lavf;
nLI=1:size(LI,2);nLII=1:size(LII,2);nLIII=1:size(LIII,2);nLavl=1:size(Lavl,2);
nLavr=1:size(Lavr,2); nLavf=1:size(Lavf,2);//распаковка НССЗ
W=max(abs([X1 X2 X3 X4 X5 X6]));[Amax,Amin]=SciSkl(W);//Масштабирование
XS=V.XS; [a,b]=max(abs(XS));//приведение к началу отсчета по максиму в СО
t1=(t1-t1(b))/1000; t2=(t2-t2(b))/1000; t3=(t3-t3(b))/1000; t4=(t4-t4(b))/1000;

78
t5=(t5-t5(b))/1000; t6=(t6-t6(b))/1000; deltaT=t1(2)-t1(1);
kF=kF+1;f=figure(kF); f.figure_size = [1032,550]; f.figure_position = [-5,0]; f.figure_name
='Типичные микроальтернации во фронтальных отведениях'; f.background=-2; f.info_message
= "Interior01qA";
subplot(241);title('I'); plot(t1-t1(b),X1,'k',t1(b),Amin,'^r',t1(b),Amax,'vy'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes"); a.data_bounds=[min(t1) max(t1) Amin Amax];
subplot(242);title('II'); plot(t2,X2,'k',t2(b),Amin,'^r',t2(b),Amax,'vg'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t2) max(t2) Amin Amax];
subplot(243);title('III'); plot(t3,X3,'k',t3(b),Amin,'^y',t3(b),Amax,'vg'); ylabel('мВ');
set(gca(),"grid",[1 1]); set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3;
p1=a.children;p2=p1.children; p2.thickness=Lthickness; a.data_bounds=[min(t3) max(t3) Amin
Amax];
subplot(244);plot(nLI,LI,'vk', nLII,LII,'ok', nLIII,LIII,'^k'); a=legend('I','II','III');a.background=-
2;a.foreground=-2;a.font_color = -1; a.font_size=3; plot(nLI,LI,'k', nLII,LII,'k', nLIII,LIII,'k');
title(StrDop); xlabel('Номер компоненты'); ylabel('Энергетический вклад,%');
set(gca(),"grid",[1 1]); a=get("current_axes"); a.title.font_size=3; a.y_label.font_size=3;
a.x_label.font_size=3; p1=a.children; p2=p1.children; p2.thickness=Lthickness;
set(gca(),"font_size",3);
subplot(245); title('avl'); plot(t4,X4,'k',t4(b),Amin,'^k',t4(b),Amax,'vy'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t4) max(t4) Amin Amax];
subplot(246); title('avr');plot(t5,X5,'k',t5(b),Amin,'^k',t5(b),Amax,'vr'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3; p1=a.children;
p2=p1.children;p2.thickness=Lthickness; a.data_bounds=[min(t5) max(t5) Amin Amax];
subplot(247); title('avf'); plot(t6,X6,'k',t6(b),Amin,'^k',t6(b),Amax,'vg'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t6) max(t6) Amin Amax];
subplot(248); plot(nLavl,Lavl,'vk', nLavr,Lavr,'ok', nLavf,Lavf,'^k'); xlabel('Номер
компоненты'); ylabel('Энергетический вклад,%'); set(gca(),"grid",[1 1]);
a=legend('avl','avr','avf'); a.background=-2; a.foreground=-2;a.font_color = -1;a.font_size=3;
plot(nLavl,Lavl,'k',nLavr,Lavr,'k',nLavf,Lavf,'k'); a=get("current_axes"); a.title.font_size=3;
a.y_label.font_size=3;p1=a.children; p2=p1.children; p2.thickness=Lthickness;
set(gca(),"font_size",3);
endfunction

Interior01qC.sci
function kF=Interior01qC(V,kF,StrDop,Min,Mean,Max)
// Первая компонента во фронтальных отведениях
Lthickness=2;//Толщина линий графиков
t1=V.t1F;X1=V.X1; t2=V.t2F;X2=V.X2; t3=V.t3F;X3=V.X3;t4=V.t4F;X4=V.Xavl;
t5=V.t5F;X5=V.Xavr; t6=V.t6F;X6=V.Xavf;//распаковка отведения
LI=V.LI; LII=V.LII; LIII=V.LIII; Lavl=V.Lavl; Lavr=V.Lavr; Lavf=V.Lavf;
nLI=1:size(LI,2); nLII=1:size(LII,2);nLIII=1:size(LIII,2); nLavl=1:size(Lavl,2);
nLavr=1:size(Lavr,2); nLavf=1:size(Lavf,2);//распаковка НССЗ
W=max(abs([Max,Min]));[Amax,Amin]=SciSkl(W); //Масштабирование

79
XS=V.XS; [a,b]=max(abs(XS));//приведение к началу отсчета по максимуму СО
t1=(t1-t1(b)); t2=(t2-t2(b));t3=(t3-t3(b));t4=(t4-t4(b));t5=(t5-t5(b));t6=(t6-t6(b));
t1A=t1(V.A1)-t1(b); t2A=t2(V.A2)-t2(b);t3A=t3(V.A3)-t3(b);t4A=t4(V.A4)-t4(b);
t5A=t5(V.A5)-t5(b);t6A=t6(V.A6)-t6(b);deltaT=t1(2)-t1(1);
kF=kF+1;f=figure(kF); f.figure_size = [1032,550]; f.figure_position = [-5,0]; f.figure_name
='Первая компонента во фронтальных отведениях'; f.background=-2; f.info_message =
"Interior01qC";
subplot(241);title('I'); plot(t1,X1*Mean(1),'k', t1(b),Amin,'^r',t1(b),Amax,'vy', t1A+
[-.1,.1],Min(1)*[1,1],'r',t1A+[-.1,.1],Max(1)*[1,1],'r'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3;p1=a.children; p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t1) max(t1) Amin Amax];
subplot(242);title('II'); plot(t2,X2*Mean(2),'k', t2(b),Amin,'^r',t2(b),Amax,'vg', t2A+
[-.1,.1],Min(2)*[1,1],'r',t2A+[-.1,.1],Max(2)*[1,1],'r'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3; p1=a.children;
p2=p1.children; p2.thickness=Lthickness; a.data_bounds=[min(t2) max(t2) Amin Amax];
subplot(243);title('III'); plot(t3,X3*Mean(3),'k', t3(b),Amin,'^y',t3(b),Amax,'vg', t3A+
[-.1,.1],Min(3)*[1,1],'r',t3A+[-.1,.1],Max(3)*[1,1],'r'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t3) max(t3) Amin Amax];
subplot(244); plot(nLI,LI,'vk', nLII,LII,'ok', nLIII,LIII,'^k'); a=legend('I','II','III');a.background=-
2;a.foreground=-2;a.font_color = -1; a.font_size=3; plot(nLI,LI,'k', nLII,LII,'k', nLIII,LIII,'k');
title(StrDop); xlabel('Номер компоненты'); ylabel('Энергетический вклад,%'); set(gca(),"grid",[1
1]); a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;a.x_label.font_size=3;
p1=a.children; p2=p1.children; p2.thickness=Lthickness; set(gca(),"font_size",3);
subplot(245); title('avl'); plot(t4,X4*Mean(4),'k',t4(b),Amin,'^k',t4(b),Amax,'vy', t4A+
[-.1,.1],Min(4)*[1,1],'r',t4A+[-.1,.1],Max(4)*[1,1],'r'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes");a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t4) max(t4) Amin Amax];
subplot(246); title('avr'); plot(t5,X5*Mean(5),'k',t5(b),Amin,'^k',t5(b),Amax,'vr', t5A+
[-.1,.1],Min(5)*[1,1],'r',t5A+[-.1,.1],Max(5)*[1,1],'r'); ylabel('мВ'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3);a=get("current_axes"); a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t5) max(t5) Amin Amax];
subplot(247); title('avf'); plot(t6,X6*Mean(6),'k',t6(b),Amin,'^k',t6(b),Amax,'vg', t6A+
[-.1,.1],Min(6)*[1,1],'r',t6A+[-.1,.1],Max(6)*[1,1],'r'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t6) max(t6) Amin Amax];
subplot(248); plot(nLavl,Lavl,'vk', nLavr,Lavr,'ok', nLavf,Lavf,'^k'); xlabel('Номер компоненты');
ylabel('Энергетический вклад,%'); set(gca(),"grid",[1 1]); a=legend('avl','avr','avf');
a.background=-2; a.foreground=-2; a.font_color = -1;a.font_size=3; plot(nLavl,Lavl,'k',
nLavr,Lavr,'k', nLavf,Lavf,'k'); a=get("current_axes"); a.title.font_size=3; a.y_label.font_size=3;
p1=a.children;p2=p1.children; p2.thickness=Lthickness; set(gca(),"font_size",3);
nn=messagebox('Табличное определение угла отклонения электрической оси сердца', "modal",
"question",["Да","Нет"]);
if nn == 1 then;[Q_I,R_I,S_I,SUM_I,tauQRS]=SciQRSsum(X1*Mean(1));
[Q_III,R_III,S_III,SUM_III,tauQRS]=SciQRSsum(X3*Mean(3));

80
kF=SciAlpha(SUM_I,SUM_III,kF);end;
endfunction

Interior01qC2.sci
function kF=Interior01qC2(V,kF,StrDop,Min,Mean,Max)
// Вторая компонента во фронтальных отведениях
Lthickness=2;//Толщина линий графиков
t1=V.t1F;X1=V.X1; t2=V.t2F;X2=V.X2; t3=V.t3F;X3=V.X3; t4=V.t4F;X4=V.Xavl;
t5=V.t5F;X5=V.Xavr; t6=V.t6F;X6=V.Xavf;
LI=V.LI;LII=V.LII;LIII=V.LIII;Lavl=V.Lavl;Lavr=V.Lavr;Lavf=V.Lavf;
nLI=1:size(LI,2);nLII=1:size(LII,2);nLIII=1:size(LIII,2);nLavl=1:size(Lavl,2);
nLavr=1:size(Lavr,2);nLavf=1:size(Lavf,2); //распаковка НССЗ
W=max(abs([Max,Min]));[Amax,Amin]=SciSkl(W); //Масштабирование
XS=V.XS; [a,b]=max(abs(XS));//приведение к началу отсчета по максимуму СО
t1=(t1-t1(b)); t2=(t2-t2(b)); t3=(t3-t3(b)); t4=(t4-t4(b)); t5=(t5-t5(b)); t6=(t6-t6(b));
t1A=t1(V.A1)-t1(b); t2A=t2(V.A2)-t2(b); t3A=t3(V.A3)-t3(b); t4A=t4(V.A4)-t4(b);
t5A=t5(V.A5)-t5(b);t6A=t6(V.A6)-t6(b);deltaT=t1(2)-t1(1);
kF=kF+1;f=figure(kF); f.figure_size = [1032,550]; f.figure_position = [-5,0]; f.figure_name
='Вторая компонента во фронтальных отведениях'; f.background=-2; f.info_message =
"Interior02qC2";
subplot(241);title('I'); plot(t1,X1*Max(1),'k',t1(b),Amin,'^r',t1(b),Amax,'vy', t1A+
[-.1,.1],Min(1)*[1,1],'r',t1A+[-.1,.1],Max(1)*[1,1],'r'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes");a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t1) max(t1) Amin Amax];
subplot(242);title('II'); plot(t2,X2*Max(2),'k', t2(b),Amin,'^r',t2(b),Amax,'vg', t2A+
[-.1,.1],Min(2)*[1,1],'r',t2A+[-.1,.1],Max(2)*[1,1],'r'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3; p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t2) max(t2) Amin Amax];
subplot(243); title('III');plot(t3,X3*Max(3),'k', t3(b),Amin,'^y',t3(b),Amax,'vg', t3A+
[-.1,.1],Min(3)*[1,1],'r',t3A+[-.1,.1],Max(3)*[1,1],'r'); ylabel('мВ'); set(gca(),"grid",[1
1]);set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3; p1=a.children;
p2=p1.children; p2.thickness=Lthickness;a.data_bounds=[min(t3) max(t3) Amin Amax];
subplot(244); plot(nLI,LI,'vk', nLII,LII,'ok', nLIII,LIII,'^k'); a=legend('I','II','III');a.background=-
2;a.foreground=-2;a.font_color = -1; a.font_size=3; plot(nLI,LI,'k', nLII,LII,'k',nLIII,LIII,'k');
title(StrDop); xlabel('Номер компоненты');ylabel('Энергетический вклад,%');set(gca(),"grid",[1
1]); a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;a.x_label.font_size=3;
p1=a.children; p2=p1.children;p2.thickness=Lthickness; set(gca(),"font_size",3);
subplot(245);title('avl');plot(t4,X4*Max(4),'k',t4(b),Amin,'^k',t4(b),Amax,'vy', t4A+
[-.1,.1],Min(4)*[1,1],'r',t4A+[-.1,.1],Max(4)*[1,1],'r'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes");a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t4) max(t4) Amin Amax];
subplot(246);title('avr'); plot(t5,X5*Max(5),'k',t5(b),Amin,'^k',t5(b),Amax,'vr', t5A+
[-.1,.1],Min(5)*[1,1],'r',t5A+[-.1,.1],Max(5)*[1,1],'r'); set(gca(),"grid",[1 1]);

81
set(gca(),"font_size",3); a=get("current_axes");a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t5) max(t5) Amin Amax];
subplot(247);title('avf');plot(t6,X6*Max(6),'k',t6(b),Amin,'^k',t6(b),Amax,'vg', t6A+
[-.1,.1],Min(6)*[1,1],'r',t6A+[-.1,.1],Max(6)*[1,1],'r'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes");a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t6) max(t6) Amin Amax];
subplot(248);plot(nLavl,Lavl,'vk', nLavr,Lavr,'ok', nLavf,Lavf,'^k'); xlabel('Номер
компоненты'); ylabel('Энергетический вклад,%'); set(gca(),"grid",[1 1]);a=legend('avl','avr','avf');
a.background=-2; a.foreground=-2;a.font_color = -1;a.font_size=3; plot(nLavl,Lavl,'k',
nLavr,Lavr,'k',nLavf,Lavf,'k'); a=get("current_axes"); a.title.font_size=3; a.y_label.font_size=3;
p1=a.children;p2=p1.children; p2.thickness=Lthickness; set(gca(),"font_size",3);
endfunction

Interior01qS.sci
function kF=Interior01qS(V,kF,StrDop)
// СКО типичных микроальтернаций во фронтальных отведениях
Lthickness=2;//Толщина линий графиков
t1=V.t1F;X1=V.X1; t2=V.t2F;X2=V.X2; t3=V.t3F;X3=V.X3;t4=V.t4F;X4=V.Xavl;
t5=V.t5F;X5=V.Xavr; t6=V.t6F;X6=V.Xavf;//распаковка отведения
LI=V.LI; LII=V.LII; LIII=V.LIII; Lavl=V.Lavl; Lavr=V.Lavr; Lavf=V.Lavf;
nLI=1:size(LI,2);nLII=1:size(LII,2);nLIII=1:size(LIII,2);nLavl=1:size(Lavl,2);
nLavr=1:size(Lavr,2); nLavf=1:size(Lavf,2);//распаковка НССЗ
W=max(abs([X1 X2 X3 X4 X5 X6]));[Amax,Amin]=SciSkl(W);//Масштабирование
XS=V.XS; [a,b]=max(abs(XS));//приведение к началу отсчета по максимуму СО
t1=(t1-t1(b))/1000; t2=(t2-t2(b))/1000; t3=(t3-t3(b))/1000; t4=(t4-t4(b))/1000; t5=(t5-
t5(b))/1000;t6=(t6-t6(b))/1000;deltaT=t1(2)-t1(1);
kF=kF+1;f=figure(kF);f.figure_size = [1032,550];f.figure_position = [-5,0]; f.figure_name ='СК
микроальтернаций во фронтальных отведениях'; f.background=-2; f.info_message =
"Interior01qS";
subplot(241); title('I');plot(t1-t1(b),X1,'k',t1(b),Amin,'^r',t1(b),Amax,'vy'); set(gca(),"grid",[1
1]);set(gca(),"font_size",3);a=get("current_axes"); a.title.font_size=3; p1=a.children;
p2=p1.children; p2.thickness=Lthickness; a.data_bounds=[min(t1) max(t1) Amin Amax];
subplot(242);title('II');plot(t2,X2,'k',t2(b),Amin,'^r',t2(b),Amax,'vg'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes");a.title.font_size=3; p1=a.children;p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t2) max(t2) Amin Amax];
subplot(243);title('III');plot(t3,X3,'k',t3(b),Amin,'^y',t3(b),Amax,'vg');set(gca(),"grid",[1 1]);
set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3;p1=a.children; p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t3) max(t3) Amin Amax];
subplot(244);plot(nLI,LI,'vk', nLII,LII,'ok', nLIII,LIII,'^k'); a=legend('I','II','III');
a.background=-2; a.foreground=-2; a.font_color = -1; a.font_size=3; plot(nLI,LI,'k', nLII,LII,'k',
nLIII,LIII,'k'); title(StrDop); xlabel('Номер компоненты'); ylabel('Энергетический вклад,%');
set(gca(),"grid",[1 1]); a=get("current_axes"); a.title.font_size=3; a.y_label.font_size=3;
a.x_label.font_size=3; p1=a.children;p2=p1.children; p2.thickness=Lthickness;

82
set(gca(),"font_size",3);
subplot(245); title('avl');plot(t4,X4,'k',t4(b),Amin,'^k',t4(b),Amax,'vy'); set(gca(),"grid",[1
1]);set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3; p1=a.children;p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t4) max(t4) Amin Amax];
subplot(246); title('avr'); plot(t5,X5,'k',t5(b),Amin,'^k',t5(b),Amax,'vr'); set(gca(),"grid",[1
1]);set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3; p1=a.children;
p2=p1.children; p2.thickness=Lthickness;a.data_bounds=[min(t5) max(t5) Amin Amax];
subplot(247); title('avf'); plot(t6,X6,'k',t6(b),Amin,'^k',t6(b),Amax,'vg');set(gca(),"grid",[1 1]);
a=get("current_axes"); a.title.font_size=3;p1=a.children; p2=p1.children; p2.thickness=Lthickness;
a.data_bounds=[min(t6) max(t6) Amin Amax];
subplot(248); plot(nLavl,Lavl,'vk',nLavr,Lavr,'ok',nLavf,Lavf,'^k'); xlabel('Номер
компоненты'); ylabel('Энергетический вклад,%');set(gca(),"grid",[1 1]); a=legend('avl','avr','avf');
a.background=-2; a.foreground=-2; a.font_color = -1;a.font_size=3; plot(nLavl,Lavl,'k',
nLavr,Lavr,'k',nLavf,Lavf,'k'); a=get("current_axes");a.title.font_size=3; a.y_label.font_size=3;
p1=a.children;p2=p1.children; p2.thickness=Lthickness; set(gca(),"font_size",3);
endfunction

Interior02q.sci
function kF=Interior02q(V,kF,StrDop)
/ Типичные представители в грудных отведениях
Lthickness=2;//Толщина линий графиков
t1=V.t1B;V1=V.V1;t2=V.t2B;V2=V.V2; t3=V.t3B;V3=V.V3; t4=V.t4B; V4=V.V4; t5=V.t5B;
V5=V.V5; t6=V.t6B;V6=V.V6;//распаковка отведений
LV1=V.LV1; LV2=V.LV2;LV3=V.LV3;LV4=V.LV4;LV5=V.LV5;LV6=V.LV6; //распаковка НССЗ
W=max(abs([V1 V2 V3 V4 V5 V6]));[Amax,Amin]=SciSkl(W); //Масштабирование
nLV1=1:size(LV1,2);nLV2=1:size(LV2,2);nLV3=1:size(LV3,2);nLV4=1:size(LV4,2);
nLV5=1:size(LV5,2);nLV6=1:size(LV6,2);
XS=V.XS; [a,b]=max(abs(XS));//приведение к началу отсчета по максимуму СО
t1=(t1-t1(b))/1000; t2=(t2-t2(b))/1000; t3=(t3-t3(b))/1000; t4=(t4-t4(b))/1000; t5=(t5-t5(b))/1000;
t6=(t6-t6(b))/1000;
kF=kF+1;f=figure(kF);f.figure_size = [1032,550];f.figure_position = [-5,0]; f.figure_name
='Типичные представители в грудных отведениях'; f.background=-2;f.info_message =
"Interior02q";
subplot(241);title('V1');plot(t1,V1,'k',t1(b),Amin,'^k',t1(b),Amax,'vr'); set(gca(),"grid",[1
1]);set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3; p1=a.children;
p2=p1.children; p2.thickness=Lthickness;a.data_bounds=[min(t1) max(t1) Amin Amax];
subplot(242);title('V2');plot(t2,V2,'k',t2(b),Amin,'^k',t2(b),Amax,'vy'); set(gca(),"grid",[1
1]);set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3; p1=a.children;
p2=p1.children; p2.thickness=Lthickness;a.data_bounds=[min(t2) max(t2) Amin Amax];
subplot(243);title('V3');plot(t3,V3,'k',t3(b),Amin,'^k',t3(b),Amax,'vg'); set(gca(),"grid",[1
1]);set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3; p1=a.children;
p2=p1.children; p2.thickness=Lthickness;a.data_bounds=[min(t3) max(t3) Amin Amax];

83
subplot(244);plot(nLV1,LV1,'vk', nLV2,LV2,'ok', nLV3,LV3,'^k'); a=legend('V1','V2','V3');
a.background=-2;a.foreground=-2;a.font_color = -1; a.font_size=3; plot(nLV1,LV1,'k',
nLV2,LV2,'k',nLV3,LV3,'k'); title(StrDop);xlabel('Номер компоненты'); ylabel('Энергетический
вклад,%'); set(gca(),"grid",[1 1]); a=get("current_axes"); a.title.font_size=3; a.y_label.font_size=3;
a.x_label.font_size=3;p1=a.children; p2=p1.children; p2.thickness=Lthickness;
set(gca(),"font_size",3);
subplot(245);title('V4');plot(t4,V4,'k',t4(b),Amin,'^k',t4(b),Amax,'vb');set(gca(),"grid",[1 1]);
set(gca(),"grid",[1 1]);set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3;
p1=a.children; p2=p1.children; p2.thickness=Lthickness; a.data_bounds=[min(t4) max(t4) Amin
Amax];
subplot(246); title('V5');plot(t5,V5,'k',t5(b),Amin,'^k',t5(b),Amax,'vm'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t5) max(t5) Amin Amax];
subplot(247); title('V6');plot(t6,V6,'k',t6(b),Amin,'^k',t6(b),Amax,'vk');set(gca(),"grid",[1 1]);
set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t6) max(t6) Amin Amax];
subplot(248);plot(nLV4,LV4,'vk', nLV5,LV5,'ok', nLV6,LV6,'^k');a=legend('V4','V5','V6');
a.background=-2;a.foreground=-2;a.font_color = -1; a.font_size=3; plot(nLV4,LV4,'k',
nLV5,LV5,'k',nLV6,LV6,'k');xlabel('Номер компоненты'); ylabel('Энергетический вклад,
%');set(gca(),"grid",[1 1]); a=get("current_axes"); a.title.font_size=3; a.y_label.font_size=3;
a.x_label.font_size=3;p1=a.children;p2=p1.children; p2.thickness=Lthickness;
set(gca(),"font_size",3);
endfunction

Interior02qA.sci
function kF=Interior02qA(V,kF,StrDop)
// Типичные микроальтернации в грудных отведениях
Lthickness=2;//Толщина линий графиков
t1=V.t1B;V1=V.V1;t2=V.t2B;V2=V.V2;t3=V.t3B;V3=V.V3; t4=V.t4B; V4=V.V4; t5=V.t5B;
V5=V.V5; t6=V.t6B;V6=V.V6; //распаковка отведений
LV1=V.LV1;LV2=V.LV2;LV3=V.LV3;LV4=V.LV4;LV5=V.LV5;LV6=V.LV6;//распаковка НССЗ
W=max(abs([V1 V2 V3 V4 V5 V6]));[Amax,Amin]=SciSkl(W);//Масштабирование
nLV1=1:size(LV1,2);nLV2=1:size(LV2,2);nLV3=1:size(LV3,2);nLV4=1:size(LV4,2);
nLV5=1:size(LV5,2);nLV6=1:size(LV6,2);
XS=V.XS; [a,b]=max(abs(XS)); //приведение к началу отсчета по максимуму СО
t1=(t1-t1(b))/1000;t2=(t2-t2(b))/1000;t3=(t3-t3(b))/1000;t4=(t4-t4(b))/1000;t5=(t5-t5(b))/1000;
t6=(t6-t6(b))/1000;
kF=kF+1;f=figure(kF);f.figure_size = [1032,550];f.figure_position = [-5,0]; f.figure_name
='Типичные микроальтернации в грудных отведениях'; f.background=-2; f.info_message =
"Interior02qA";
subplot(241);title('V1');plot(t1,V1,'k',t1(b),Amin,'^k',t1(b),Amax,'vr');
set(gca(),"grid",[1 1]);set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3;
p1=a.children;p2=p1.children;p2.thickness=Lthickness;a.data_bounds=[min(t1) max(t1) Amin
Amax];
subplot(242);title('V2');plot(t2,V2,'k',t2(b),Amin,'^k',t2(b),Amax,'vy');
set(gca(),"grid",[1 1]);set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3;
p1=a.children;p2=p1.children;p2.thickness=Lthickness;a.data_bounds=[min(t2) max(t2) Amin

84
Amax];
subplot(243);title('V3');plot(t3,V3,'k',t3(b),Amin,'^k',t3(b),Amax,'vg');
set(gca(),"grid",[1 1]);set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3;
p1=a.children;p2=p1.children;p2.thickness=Lthickness;a.data_bounds=[min(t3) max(t3) Amin
Amax];
subplot(244);plot(nLV1,LV1,'vk', nLV2,LV2,'ok', nLV3,LV3,'^k');
a=legend('V1','V2','V3');a.background=-2;a.foreground=-2;a.font_color = -1; a.font_size=3;
plot(nLV1,LV1,'k', nLV2,LV2,'k', nLV3,LV3,'k');title(StrDop);xlabel('Номер компоненты');
ylabel('Энергетический вклад,%');set(gca(),"grid",[1 1]); a=get("current_axes");
a.title.font_size=3;a.y_label.font_size=3;a.x_label.font_size=3;
p1=a.children;p2=p1.children;p2.thickness=Lthickness; set(gca(),"font_size",3);
subplot(245);title('V4');plot(t4,V4,'k',t4(b),Amin,'^k',t4(b),Amax,'vb');
set(gca(),"grid",[1 1]);set(gca(),"grid",[1 1]);set(gca(),"font_size",3);a=get("current_axes");
a.title.font_size=3;p1=a.children; p2=p1.children;p2.thickness=Lthickness;
a.data_bounds=[min(t4) max(t4) Amin Amax];
subplot(246);title('V5');plot(t5,V5,'k',t5(b),Amin,'^k',t5(b),Amax,'vm');
set(gca(),"grid",[1 1]);set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3;
p1=a.children;p2=p1.children;p2.thickness=Lthickness;a.data_bounds=[min(t5) max(t5) Amin
Amax];
subplot(247);title('V6');plot(t6,V6,'k',t6(b),Amin,'^k',t6(b),Amax,'vk');
set(gca(),"grid",[1 1]);set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3;
p1=a.children;p2=p1.children;p2.thickness=Lthickness;a.data_bounds=[min(t6) max(t6) Amin
Amax];
subplot(248); plot(nLV4,LV4,'vk', nLV5,LV5,'ok', nLV6,LV6,'^k');a=legend('V4','V5','V6');
a.background=-2;a.foreground=-2;a.font_color = -1; a.font_size=3; plot(nLV4,LV4,'k',
nLV5,LV5,'k',nLV6,LV6,'k');xlabel('Номер компоненты'); ylabel('Энергетический вклад,
%');set(gca(),"grid",[1 1]); a=get("current_axes"); a.title.font_size=3; a.y_label.font_size=3;
a.x_label.font_size=3;p1=a.children;p2=p1.children; p2.thickness=Lthickness;
set(gca(),"font_size",3);
endfunction

Interior02qC.sci
function kF=Interior02qC(V,kF,StrDop,Min,Mean,Max);
// Первая компонента в грудных отведениях
Lthickness=2;//Толщина линий графиков
t1=V.t1B;V1=V.V1;t2=V.t2B;V2=V.V2;t3=V.t3B;V3=V.V3;t4=V.t4B;V4=V.V4;
t5=V.t5B;V5=V.V5;t6=V.t6B;V6=V.V6; //распаковка отведений
LV1=V.LV1;LV2=V.LV2;LV3=V.LV3;LV4=V.LV4;LV5=V.LV5;LV6=V.LV6; //распаковка НССЗ
W=max(abs([Max,Min]));[Amax,Amin]=SciSkl(W); //Масштабирование
nLV1=1:size(LV1,2); nLV2=1:size(LV2,2); nLV3=1:size(LV3,2);nLV4=1:size(LV4,2);
nLV5=1:size(LV5,2);nLV6=1:size(LV6,2);
XS=V.XS; [a,b]=max(abs(XS)); //приведение к началу отсчета по максимуму СО
t1=(t1-t1(b)); t2=(t2-t2(b)); t3=(t3-t3(b));t4=(t4-t4(b));t5=(t5-t5(b));t6=(t6-t6(b));
t1A=t1(V.A1)-t1(b); t2A=t2(V.A2)-t2(b); t3A=t3(V.A3)-t3(b); t4A=t4(V.A4)-t4(b);
t5A=t5(V.A5)-t5(b); t6A=t6(V.A6)-t6(b);

85
kF=kF+1;f=figure(kF);f.figure_size = [1032,550];f.figure_position = [-5,0]; f.figure_name
='Первая компонента в грудных отведениях'; f.background=-2;f.info_message = "Interior02qC";
subplot(241);title('V1');plot(t1,V1*Mean(7),'k',t1(b),Amin,'^k',t1(b),Amax,'vr', t1A+
[-.1,.1],Min(7)*[1,1],'r',t1A+[-.1,.1],Max(7)*[1,1],'r'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t1) max(t1) Amin Amax];
subplot(242);title('V2');plot(t2,V2*Mean(8),'k',t2(b),Amin,'^k',t2(b),Amax,'vy', t1A+
[-.1,.1],Min(8)*[1,1],'r',t1A+[-.1,.1],Max(8)*[1,1],'r'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes");a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t2) max(t2) Amin Amax];
subplot(243); title('V3');plot(t3,V3*Mean(9),'k',t3(b),Amin,'^k',t3(b),Amax,'vg', t1A+
[-.1,.1],Min(9)*[1,1],'r',t1A+[-.1,.1],Max(9)*[1,1],'r'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t3) max(t3) Amin Amax];
subplot(244);plot(nLV1,LV1,'vk', nLV2,LV2,'ok', nLV3,LV3,'^k'); a=legend('V1','V2','V3');
a.background=-2;a.foreground=-2;a.font_color = -1; a.font_size=3; plot(nLV1,LV1,'k',
nLV2,LV2,'k', nLV3,LV3,'k');title(StrDop);xlabel('Номер компоненты'); ylabel('Энергетический
вклад,%'); set(gca(),"grid",[1 1]); a=get("current_axes"); a.title.font_size=3; a.y_label.font_size=3;
a.x_label.font_size=3;p1=a.children; p2=p1.children; p2.thickness=Lthickness;
set(gca(),"font_size",3);
subplot(245);title('V4');plot(t4,V4*Mean(10),'k',t4(b),Amin,'^k',t4(b),Amax,'vb', t1A+
[-.1,.1],Min(10)*[1,1],'r',t1A+[-.1,.1],Max(10)*[1,1],'r');set(gca(),"grid",[1 1]); set(gca(),"grid",[1
1]);set(gca(),"font_size",3);a=get("current_axes"); a.title.font_size=3; p1=a.children;
p2=p1.children; p2.thickness=Lthickness;a.data_bounds=[min(t4) max(t4) Amin Amax];
subplot(246); title('V5');plot(t5,V5*Mean(11),'k',t5(b),Amin,'^k',t5(b),Amax,'vm', t1A+
[-.1,.1],Min(11)*[1,1],'r',t1A+[-.1,.1],Max(11)*[1,1],'r');set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes");a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t5) max(t5) Amin Amax];
subplot(247);title('V6');plot(t6,V6*Mean(12),'k',t6(b),Amin,'^k',t6(b),Amax,'vk', t1A+
[-.1,.1],Min(12)*[1,1],'r',t1A+[-.1,.1],Max(12)*[1,1],'r');set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes");a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t6) max(t6) Amin Amax];
subplot(248);plot(nLV4,LV4,'vk', nLV5,LV5,'ok', nLV6,LV6,'^k'); a=legend('V4','V5','V6');
a.background=-2; a.foreground=-2;a.font_color = -1; a.font_size=3; plot(nLV4,LV4,'k',
nLV5,LV5,'k', nLV6,LV6,'k');xlabel('Номер компоненты'); ylabel('Энергетический вклад,
%');set(gca(),"grid",[1 1]); a=get("current_axes"); a.title.font_size=3; a.y_label.font_size=3;
a.x_label.font_size=3; p1=a.children;[p2=p1.children; p2.thickness=Lthickness;
set(gca(),"font_size",3);
endfunction

Interior02qC2.sci
function kF=Interior02qC2(V,kF,StrDop,Min,Mean,Max)
// Вторая компонента в грудных отведениях
Lthickness=2;//Толщина линий графиков

86
t1=V.t1B;V1=V.V1;t2=V.t2B;V2=V.V2;t3=V.t3B;V3=V.V3;t4=V.t4B;V4=V.V4;t5=V.t5B;V5=V.V5
;t6=V.t6B;V6=V.V6; //распаковка отведений
LV1=V.LV1;LV2=V.LV2;LV3=V.LV3;LV4=V.LV4;LV5=V.LV5;LV6=V.LV6; //распаковка НССЗ
W=max(abs([Max,Min]));[Amax,Amin]=SciSkl(W); //Масштабирование
nLV1=1:size(LV1,2);nLV2=1:size(LV2,2);nLV3=1:size(LV3,2);nLV4=1:size(LV4,2);
nLV5=1:size(LV5,2); nLV6=1:size(LV6,2);
XS=V.XS; [a,b]=max(abs(XS)); //приведение к началу отсчета по максимумe СО
t1=(t1-t1(b));t2=(t2-t2(b));t3=(t3-t3(b));t4=(t4-t4(b));t5=(t5-t5(b));t6=(t6-t6(b));t1A=t1(V.A1)-
t1(b);t2A=t2(V.A2)-t2(b);t3A=t3(V.A3)-t3(b);t4A=t4(V.A4)-t4(b); t5A=t5(V.A5)-
t5(b);t6A=t6(V.A6)-t6(b);
kF=kF+1;f=figure(kF);f.figure_size = [1032,550];f.figure_position = [-5,0]; f.figure_name
='Вторая компонента в грудных отведениях'; f.background=-2;f.info_message =
"Interior02qC2";
subplot(241);title('V1');plot(t1,V1*Max(7),'k', t1(b),Amin,'^k',t1(b),Amax,'vr',t1A+
[-.1,.1],Min(7)*[1,1],'r',t1A+[-.1,.1],Max(7)*[1,1],'r'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3; p1=a.children;p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t1) max(t1) Amin Amax];
subplot(242); title('V2'); plot(t2,V2*Max(8),'k', t2(b),Amin,'^k',t2(b),Amax,'vy', t1A+
[-.1,.1],Min(8)*[1,1],'r',t1A+[-.1,.1],Max(8)*[1,1],'r'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes");a.title.font_size=3; p1=a.children;
p2=p1.children;p2.thickness=Lthickness;a.data_bounds=[min(t2) max(t2) Amin Amax];
subplot(243);title('V3'); plot(t3,V3*Max(9),'k',t3(b),Amin,'^k',t3(b),Amax,'vg', t1A+
[-.1,.1],Min(9)*[1,1],'r',t1A+[-.1,.1],Max(9)*[1,1],'r'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t3) max(t3) Amin Amax];
subplot(244);plot(nLV1,LV1,'vk', nLV2,LV2,'ok', nLV3,LV3,'^k');a=legend('V1','V2','V3');
a.background=-2;a.foreground=-2;a.font_color = -1;a.font_size=3; plot(nLV1,LV1,'k',
nLV2,LV2,'k',nLV3,LV3,'k'); title(StrDop);xlabel('Номер компоненты'); ylabel('Энергетический
вклад,%'); set(gca(),"grid",[1 1]); a=get("current_axes"); a.title.font_size=3;
a.y_label.font_size=3; a.x_label.font_size=3;p1=a.children; p2=p1.children;
p2.thickness=Lthickness; set(gca(),"font_size",3);
subplot(245);title('V4');plot(t4,V4*Max(10),'k', t4(b),Amin,'^k',t4(b),Amax,'vb', t1A+
[-.1,.1],Min(10)*[1,1],'r',t1A+[-.1,.1],Max(10)*[1,1],'r'); set(gca(),"grid",[1 1]);set(gca(),"grid",[1
1]);set(gca(),"font_size",3);a=get("current_axes"); a.title.font_size=3; p1=a.children;
p2=p1.children; p2.thickness=Lthickness; a.data_bounds=[min(t4) max(t4) Amin Amax];
subplot(246); title('V5');plot(t5,V5*Max(11),'k', t5(b),Amin,'^k',t5(b),Amax,'vm', t1A+
[-.1,.1],Min(11)*[1,1],'r',t1A+[-.1,.1],Max(11)*[1,1],'r'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes");a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t5) max(t5) Amin Amax];
subplot(247);title('V6');plot(t6,V6*Max(12),'k',t6(b),Amin,'^k',t6(b),Amax,'vk', t1A+
[-.1,.1],Min(12)*[1,1],'r',t1A+[-.1,.1],Max(12)*[1,1],'r'); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3);a=get("current_axes"); a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t6) max(t6) Amin Amax];
subplot(248);plot(nLV4,LV4,'vk', nLV5,LV5,'ok', nLV6,LV6,'^k');a=legend('V4','V5','V6');

87
a.background=-2;a.foreground=-2;a.font_color = -1; a.font_size=3; plot(nLV4,LV4,'k',
nLV5,LV5,'k',nLV6,LV6,'k'); xlabel('Номер компоненты'); ylabel('Энергетический вклад,
%');set(gca(),"grid",[1 1]); a=get("current_axes"); a.title.font_size=3;a.y_label.font_size=3;
a.x_label.font_size=3; p1=a.children; p2=p1.children; p2.thickness=Lthickness;
set(gca(),"font_size",3);
endfunction

Interior02qS.sci
function kF=Interior02qS(V,kF,StrDop)
//СКО типичных микроальтернаций в грудных отведениях
Lthickness=2;//Толщина линий графиков
t1=V.t1B;V1=V.V1;t2=V.t2B;V2=V.V2;t3=V.t3B;V3=V.V3;t4=V.t4B;V4=V.V4;t5=V.t5B;V5=V.V5
;t6=V.t6B;V6=V.V6;//распаковка отведений
LV1=V.LV1;LV2=V.LV2;LV3=V.LV3;LV4=V.LV4;LV5=V.LV5;LV6=V.LV6;//распаковка НССЗ
W=max(abs([V1 V2 V3 V4 V5 V6]));[Amax,Amin]=SciSkl(W); //Масштабирование
nLV1=1:size(LV1,2); nLV2=1:size(LV2,2); nLV3=1:size(LV3,2); nLV4=1:size(LV4,2);
nLV5=1:size(LV5,2); nLV6=1:size(LV6,2);
XS=V.XS;[a,b]=max(abs(XS));//приведение к началу отсчета по максимуму СО
t1=(t1-t1(b))/1000; t2=(t2-t2(b))/1000; t3=(t3-t3(b))/1000; t4=(t4-t4(b))/1000; t5=(t5-t5(b))/1000;
t6=(t6-t6(b))/1000;
kF=kF+1;f=figure(kF);f.figure_size = [1032,550];f.figure_position = [-5,0]; f.figure_name ='СК
микроальтернаций в грудных отведениях'; f.background=-2;f.info_message = "Interior02qS";
subplot(241); title('V1');plot(t1,V1,'k',t1(b),Amin,'^k',t1(b),Amax,'vr');set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes");a.title.font_size=3; p1=a.children;
p2=p1.children;p2.thickness=Lthickness; a.data_bounds=[min(t1) max(t1) Amin Amax];
subplot(242);title('V2');plot(t2,V2,'k',t2(b),Amin,'^k',t2(b),Amax,'vy'); set(gca(),"grid",[1
1]);set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3; p1=a.children;p2=
p1.children;p2.thickness=Lthickness;a.data_bounds=[min(t2) max(t2) Amin Amax];
subplot(243);title('V3');plot(t3,V3,'k',t3(b),Amin,'^k',t3(b),Amax,'vg'); set(gca(),"grid",[1
1]);set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3; p1=a.children;
p2=p1.children;p2.thickness=Lthickness;a.data_bounds=[min(t3) max(t3) Amin Amax];
subplot(244);plot(nLV1,LV1,'vk', nLV2,LV2,'ok', nLV3,LV3,'^k'); a=legend('V1','V2','V3');
a.background=-2;a.foreground=-2;a.font_color = -1; a.font_size=3; plot(nLV1,LV1,'k',
nLV2,LV2,'k',nLV3,LV3,'k');title(StrDop);xlabel('Номер компоненты'); ylabel('Энергетический
вклад,%'); set(gca(),"grid",[1 1]); a=get("current_axes"); a.title.font_size=3;
a.y_label.font_size=3; a.x_label.font_size=3;p1=a.children; p2=p1.children;
p2.thickness=Lthickness; set(gca(),"font_size",3);
subplot(245);title('V4'); plot(t4,V4,'k',t4(b),Amin,'^k',t4(b),Amax,'vb');set(gca(),"grid",[1 1]);
set(gca(),"grid",[1 1]);set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3;
p1=a.children; p2=p1.children;p2.thickness=Lthickness;a.data_bounds=[min(t4) max(t4) Amin
Amax];
subplot(246);title('V5');plot(t5,V5,'k',t5(b),Amin,'^k',t5(b),Amax,'vm'); set(gca(),"grid",[1 1]);

88
set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t5) max(t5) Amin Amax];
subplot(247); title('V6');plot(t6,V6,'k',t6(b),Amin,'^k',t6(b),Amax,'vk');set(gca(),"grid",[1 1]);
set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3; p1=a.children;
p2=p1.children;p2.thickness=Lthickness;a.data_bounds=[min(t6) max(t6) Amin Amax];
subplot(248);plot(nLV4,LV4,'vk', nLV5,LV5,'ok', nLV6,LV6,'^k');a=legend('V4','V5','V6');
a.background=-2; a.foreground=-2;a.font_color = -1; a.font_size=3; plot(nLV4,LV4,'k',
nLV5,LV5,'k', nLV6,LV6,'k');xlabel('Номер компоненты'); ylabel('Энергетический вклад,%');
set(gca(),"grid",[1 1]); a=get("current_axes"); a.title.font_size=3; a.y_label.font_size=3;
a.x_label.font_size=3; p1=a.children;p2=p1.children; p2.thickness=Lthickness;
set(gca(),"font_size",3);
endfunction

Interior04q.sci
function kF=Interior04q(V,kF,StrDop)
// Определение источника возбуждения и оценка функции проводимости / 1-ая комп.,
усреднение по СА
t2=V.t2F;X2=V.X2; t3=V.t3F;X3=V.X3; t1=V.t1B;V1=V.V1;t6=V.t6B;V6=V.V6;
LII=V.LII;LIII=V.LIII; LV1=V.LV1; LV6=V.LV6; //распаковка отведений
nLII=1:size(LII,2);nLIII=1:size(LIII,2);nLV1=1:size(LV1,2);nLV6=1:size(LV6,2);
Lthickness=2;
[a,b]=max(abs(X2));t1=(t1-t1(b))/1000;t2=(t2-t2(b))/1000;t3=(t3-t3(b))/1000;t6=(t6-t6(b))/1000;
W=max(abs([X2 X3 V1 V6]));[Amax,Amin]=SciSkl(W);
kF=kF+1;f=figure(kF); f.figure_size = [1032,550]; f.figure_position = [-5,0]; f.figure_name
='Определение источника возбуждения и оценка функции проводимости / 1-ая комп.,
усреднение по СА'; f.background=-2; f.info_message = "Interior04q";
subplot(231);title('II');plot(t2,X2,'k');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes");p1=a.children;p2=p1.children;p2.thickness=Lthickness;
a.data_bounds=[min(t3) max(t3) Amin Amax];
subplot(232); title('III');plot(t3,X3,'k');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;p1=a.children;p2=p1.children;p2.thickness=Lthickness;
a.data_bounds=[min(t3) max(t3) Amin Amax];
subplot(234);title('V1');plot(t1,V1,'k');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;p1=a.children; p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t3) max(t3) Amin Amax];
subplot(235);title('V6');plot(t6,V6,'k'); set(gca(),"grid",[1 1]); set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;p1=a.children;p2=p1.children;p2.thickness=Lthickness;
a.data_bounds=[min(t3) max(t3) Amin Amax];
subplot(233);plot(nLII,LII,'ok', nLIII,LIII,'^k');a=legend('I','II','III'); a.background=-
2;a.foreground=-2;a.font_color = -1; a.font_size=3; plot(nLII,LII,'k', nLIII,LIII,'k');
title(StrDop);xlabel('Номер СЗ');ylabel('НССЗ,%'); set(gca(),"grid",[1 1]);
set(gca(),"log_Flags",'nln'); a=get("current_axes"); a.title.font_size=3; a.y_label.font_size=3;

89
a.x_label.font_size=3; p1=a.children; p2=p1.children;p2.thickness=Lthickness;
set(gca(),"font_size",3);
subplot(236);plot(nLV1,LV1,'vk', nLV6,LV6,'^k'); a=legend('V4','V5','V6'); a.background=-
2;a.foreground=-2;a.font_color = -1; a.font_size=3; plot(nLV1,LV1,'k', nLV6,LV6,'k');
ylabel('НССЗ,%'); set(gca(),"grid",[1 1]); set(gca(),"log_Flags",'nln'); a=get("current_axes");
a.title.font_size=3; a.y_label.font_size=3;a.x_label.font_size=3; p1=a.children;p2=p1.children;
p2.thickness=Lthickness; set(gca(),"font_size",3);
endfunction

Interior05q.sci
function kF=Interior05q(V,kF,Str)
// Для определение положения электрической оси сердца во фронтальной плоскости
t1=V.t1F;X1=V.X1;t2=V.t2F;X2=V.X2;t3=V.t3F;X3=V.X3;t4=V.t4F;X4=V.Xavl;
t5=V.t5F;X5=V.Xavr;t6=V.t6F;X6=V.Xavf; //распаковка отведений
Lthickness=2;
[a,b]=max(abs(X2));
t1=(t1-t1(b))/1000; t2=(t2-t2(b))/1000; t3=(t3-t3(b))/1000;t4=(t4-t4(b))/1000;t5=(t5-t5(b))/1000;
t6=(t6-t6(b))/1000;
W=max(abs([X2 X3 X3 X4 X5 X6]));[Amax,Amin]=SciSkl(W);
kF=kF+1;f=figure(kF); f.figure_size = [1032,550];f.figure_position = [-5,0]; f.figure_name ='Для
определение положения электрической оси сердца во фронтальной плоскости';
f.background=-2; f.info_message = "Interior05q";
subplot(331);plot(t1,X1,'k');set(gca(),"grid",[1 1]); set(gca(),"font_size",3);
a=get("current_axes"); a.title.font_size=3; a.y_label.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t1) max(t1) Amin Amax]; a=legend('I,
мВ');a.background=-2;a.foreground=-2; a.font_color = -1; a.font_size=3;
subplot(332);plot(t5,X5,'k'); set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes"); a.title.font_size=3; a.y_label.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t5) max(t5) Amin Amax]; a=legend('avR, мВ');
a.background=-2;a.foreground=-2;a.font_color = -1; a.font_size=3;
subplot(334);plot(t2,X2,'k');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes"); a.title.font_size=3; a.y_label.font_size=3; p1=a.children;p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t2) max(t2) Amin Amax]; a=legend('II,
мВ');a.background=-2; a.foreground=-2;a.font_color = -1; a.font_size=3;
subplot(335);plot(t4,X4,'k');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes"); a.title.font_size=3;a.y_label.font_size=3; p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t4) max(t4) Amin Amax]; a=legend('aVL, мВ');
a.background=-2;a.foreground=-2;a.font_color = -1; a.font_size=3;
subplot(337);plot(t3,X3,'k');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes"); a.title.font_size=3; a.y_label.font_size=3; p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t3) max(t3) Amin Amax]; a=legend('III, мВ');
a.background=-2;a.foreground=-2;a.font_color = -1; a.font_size=3;

90
subplot(338);plot(t6,X6,'k');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes"); a.title.font_size=3; a.y_label.font_size=3;p1=a.children; p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t6) max(t6) Amin Amax]; a=legend('aVF, мВ');
a.background=-2;a.foreground=-2;a.font_color = -1; a.font_size=3;
nn=messagebox('Табличное определение угла отклонения электрической оси сердца', "modal",
"question",["Да","Нет"]);
if nn == 1 then;[Q_I,R_I,S_I,SUM_I,tauQRS]=SciQRSsum(X1*Mean(1));
[Q_III,R_III,S_III,SUM_III,tauQRS]=SciQRSsum(X3*Mean(3));
kF=SciAlpha(SUM_I,SUM_III,kF);end;
endfunction

Interior06q.sci
function kF=Interior06q(V,kF,Str)
// Для определение положения электрической оси сердца во фронтальной плоскости / 1-ая
комп., усреднение по СА
t1F=V.t1F;X1=V.X1;t2F=V.t2F;X2=V.X2;t3F=V.t3F;X3=V.X3;t4F=V.t4F;X4=V.Xavl;t5F=V.t5F;X
5=V.Xavr;t6F=V.t6F;X6=V.Xavf;t1B=V.t1B;V1=V.V1;t2B=V.t2B;V2=V.V2;t3B=V.t3B;V3=V.V3;t
4B=V.t4B;V4=V.V4;t5B=V.t5B;V5=V.V5;t6B=V.t6B;V6=V.V6; //распаковка отведений
Lthickness=2;
[a,b]=max(abs(X2));
t1F=(t1F-t1F(b))/1000;t2F=(t2F-t2F(b))/1000;t3F=(t3F-t3F(b))/1000;t4F=(t4F-
t4F(b))/1000;t5F=(t5F-t5F(b))/1000;t6F=(t6F-t6F(b))/1000;t1B=(t1B-t1B(b))/1000;t2B=(t2B-
t2B(b))/1000; t3B=(t3B-t3B(b))/1000;t4B=(t4B-t4B(b))/1000;t5B=(t5B-t5B(b))/1000;t6B=(t6B-
t6B(b))/1000;
W=max(abs([X1 X2 X3 X3 X4 X5 X6 V1 V2 V3 V4 V5 V6]));[Amax,Amin]=SciSkl(W);
kF=kF+1;f=figure(kF);f.figure_size = [1032,550];f.figure_position = [-5,0]; f.figure_name ='Для
определение положения электрической оси сердца во фронтальной плоскости / 1-ая комп.,
усреднение по СА';f.background=-2;f.info_message = "Interior06q";
subplot(341);plot(t1F,X1,'k');set(gca(),"grid",[1 1]);//set(gca(),"font_size",3);
a=get("current_axes"); a.title.font_size=3;p1=a.children;p2=p1.children;p2.thickness=Lthickness;
a.data_bounds=[min(t1F) max(t1F) Amin Amax]; a=legend('I, мВ');a.background=-2;
a.foreground=-2;a.font_color = -1; a.font_size=3;
subplot(342);plot(t5F,X5,'k');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes"); a.title.font_size=3;p1=a.children;p2=p1.children;p2.thickness=Lthickness;
a.data_bounds=[min(t5F) max(t5F) Amin Amax]; a=legend('avR, мВ');a.background=-2;
a.foreground=-2;a.font_color = -1; a.font_size=3;
subplot(343); plot(t1B,V1,'k');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes"); a.title.font_size=3;p1=a.children;p2=p1.children;p2.thickness=Lthickness;
a.data_bounds=[min(t1B) max(t1B) Amin Amax]; a=legend('V1, мВ');a.background=-2;
a.foreground=-2;a.font_color = -1;a.font_size=3;
subplot(344);plot(t4B,V4,'k');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes"); a.title.font_size=3;p1=a.children;p2=p1.children;p2.thickness=Lthickness;
a.data_bounds=[min(t4B) max(t4B) Amin Amax]; a=legend('V4, мВ');a.background=-2;

91
a.foreground=-2;a.font_color = -1; a.font_size=3;
subplot(345);plot(t2F,X2,'k');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes"); a.title.font_size=3;p1=a.children;p2=p1.children;p2.thickness=Lthickness;
a.data_bounds=[min(t2F) max(t2F) Amin Amax]; a=legend('II, мВ');a.background=-2;
a.foreground=-2;a.font_color = -1; a.font_size=3;
subplot(346);plot(t4F,X4,'k');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes"); a.title.font_size=3;p1=a.children;p2=p1.children;p2.thickness=Lthickness;
a.data_bounds=[min(t4F) max(t4F) Amin Amax]; a=legend('avL, мВ');a.background=-2;
a.foreground=-2;a.font_color = -1; a.font_size=3;
subplot(347);plot(t2B,V2,'k');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes"); a.title.font_size=3;p1=a.children;p2=p1.children;p2.thickness=Lthickness;
a.data_bounds=[min(t2B) max(t2B) Amin Amax]; a=legend('V2, мВ');a.background=-2;
a.foreground=-2;a.font_color = -1; a.font_size=3;
subplot(348);plot(t5B,V5,'k');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;p1=a.children;p2=p1.children;p2.thickness=Lthickness;
a.data_bounds=[min(t5B) max(t5B) Amin Amax]; a=legend('V5, мВ');a.background=-2;
a.foreground=-2;a.font_color = -1; a.font_size=3;
subplot(349);plot(t3F,X3,'k');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes"); a.title.font_size=3;p1=a.children;p2=p1.children;p2.thickness=Lthickness;
a.data_bounds=[min(t3F) max(t3F) Amin Amax]; a=legend('III, мВ');a.background=-2;
a.foreground=-2;a.font_color = -1; a.font_size=3;
subplot(3,4,10);plot(t6F,X6,'k');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3; p1=a.children;p2=p1.children;p2.thickness=Lthickness;
a.data_bounds=[min(t6F) max(t6F) Amin Amax]; a=legend('avF, мВ');a.background=-2;
a.foreground=-2;a.font_color = -1; a.font_size=3;
subplot(3,4,11);plot(t3B,V3,'k'); set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;p1=a.children;p2=p1.children;p2.thickness=Lthickness;
a.data_bounds=[min(t3B) max(t3B) Amin Amax]; a=legend('V3, мВ');a.background=-2;
a.foreground=-2;a.font_color = -1; a.font_size=3;
subplot(3,4,12);plot(t6B,V6,'k');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;p1=a.children;p2=p1.children;p2.thickness=Lthickness;
a.data_bounds=[min(t6B) max(t6B) Amin Amax]; a=legend('V6, мВ');a.background=-2;
a.foreground=-2;a.font_color = -1; a.font_size=3;
nn=messagebox('Табличное определение угла отклонения электрической оси сердца', "modal",
"question",["Да","Нет"]);
if nn == 1 then;[Q_I,R_I,S_I,SUM_I,tauQRS]=SciQRSsum(X1*Mean(1));
[Q_III,R_III,S_III,SUM_III,tauQRS]=SciQRSsum(X3*Mean(3));
kF=SciAlpha(SUM_I,SUM_III,kF);end;
endfunction

Interior07q.sci
function kF=Interior07q(V,kF,Str)
// Для определение поворота сердца вокруг поперечной оси, анализ предсердного зубца P /
1-ая комп., усреднение по СА

92
t1=V.t1F;X1=V.X1;t2=V.t2F;X2=V.X2;t3=V.t3F;X3=V.X3;//распаковка отведений
Lthickness=2;
[a,b]=max(abs(X2));
t1=(t1-t1(b))/1000;t2=(t2-t2(b))/1000;t3=(t3-t3(b))/1000; W=max(abs([X1 X2 X3]));
[Amax,Amin]=SciSkl(W);
kF=kF+1;f=figure(kF);f.figure_size = [1032,550];f.figure_position = [-5,0]; f.figure_name ='Для
определение поворота сердца вокруг поперечной оси, анализ предсердного зубца P / 1-ая
комп., усреднение по СА';f.background=-2; f.info_message = "Interior07q";
subplot(221);title('I');plot(t1,X1,'k');set(gca(),"grid",[1 1]);set(gca(),"grid",[1 1]);
set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3;p1=a.children;
p2=p1.children;p2.thickness=Lthickness;a.data_bounds=[min(t1) max(t1) Amin Amax];
subplot(223);title('II');plot(t2,X2,'k');set(gca(),"grid",[1 1]);set(gca(),"grid",[1 1]);
set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;
p1=a.children;p2=p1.children;p2.thickness=Lthickness;a.data_bounds=[min(t2) max(t2) Amin
Amax];
subplot(224);title('III');plot(t3,X3,'k');set(gca(),"grid",[1 1]);set(gca(),"grid",[1 1]);
set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;
p1=a.children;p2=p1.children;p2.thickness=Lthickness;a.data_bounds=[min(t3) max(t3) Amin
Amax];
endfunction

Interior08q.sci
function kF=Interior08q(V,kF,Str)
// Для анализа предсердного зубца P / 1-ая комп., усреднение по СА
t4=V.t4F;X4=V.Xavl;t5=V.t5B;V5=V.V5;t6=V.t6B;V6=V.V6; //распаковка отведений
Lthickness=2;
X2=V.X2; [a,b]=max(abs(X2));
t4=(t4-t4(b))/1000;t5=(t5-t5(b))/1000;t6=(t6-t6(b))/1000;
W=max(abs([X4 V5 V6]));[Amax,Amin]=SciSkl(W);
kF=kF+1;f=figure(kF);f.figure_size = [1032,550];f.figure_position = [-5,0]; f.figure_name ='Для
анализа предсердного зубца P / 1-ая комп., усреднение по СА';
f.background=-2;f.info_message = "Interior08q";
subplot(223);title('aVL');plot(t4,X4,'k');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3; a.y_label.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t4) max(t4) Amin Amax];
subplot(222);title('V5');plot(t5,V5,'k');set(gca(),"grid",[1 1]); set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t5) max(t5) Amin Amax];
subplot(224);title('V6');plot(t6,V6,'k');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t6) max(t6) Amin Amax];

93
endfunction

Interior09q.sci
function kF=Interior09q(V,kF,Str)
// Для анализа предсердного зубца P / 1-ая комп., усреднение по СА
t2=V.t2F;X2=V.X2;t3=V.t3F;X3=V.X3;t6=V.t6F;X6=V.Xavf; //распаковка отведений
Lthickness=2;
X2=V.X2;[a,b]=max(abs(X2));
t2=(t2-t2(b))/1000;t3=(t3-t3(b))/1000;t6=(t6-t6(b))/1000;
W=max(abs([X2 X3 X6]));[Amax,Amin]=SciSkl(W);
kF=kF+1;f=figure(kF);f.figure_size = [1032,550];f.figure_position = [-5,0]; f.figure_name ='Для
анализа предсердного зубца P / 1-ая комп., усреднение по СА'; f.background=-2;f.info_message
= "Interiot09q";
subplot(222);title('II');plot(t2,X2,'k');ylabel('мВ');set(gca(),"grid",[1 1]);
set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;
p1=a.children;p2=p1.children;p2.thickness=Lthickness;a.data_bounds=[min(t2) max(t2) Amin
Amax];
subplot(224);title('III');plot(t3,X3,'k');ylabel('мВ');set(gca(),"grid",[1 1]);
set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;
p1=a.children;p2=p1.children;p2.thickness=Lthickness;a.data_bounds=[min(t3) max(t3) Amin
Amax];
subplot(223);title('aVF');plot(t6,X6,'k');ylabel('мВ');set(gca(),"grid",[1 1]);
set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;
p1=a.children;p2=p1.children;p2.thickness=Lthickness; a.data_bounds=[min(t6) max(t6) Amin
Amax];
nn=messagebox('Табличное определение угла отклонения электрической оси сердца', "modal",
"question",["Да","Нет"]);
if nn == 1 then;[Q_I,R_I,S_I,SUM_I,tauQRS]=SciQRSsum(X1*Mean(1));
[Q_III,R_III,S_III,SUM_III,tauQRS]=SciQRSsum(X3*Mean(3));
kF=SciAlpha(SUM_I,SUM_III,kF);end;
endfunction

Interior10q.sci
function kF=Interior10q(V,kF,Str)
//Восстановление ЭКГ во фронтальных отведениях
t1=V.t1F;X1=V.X1;t2=V.t2F;X2=V.X2;t3=V.t3F;X3=V.X3;t4=V.t4F;X4=V.Xavl;
t5=V.t5F;X5=V.Xavr;t6=V.t6F;X6=V.Xavf; //распаковка отведений
Lthickness=2;
W=max(abs([X1 X2 X3]));[Amax,Amin]=SciSkl(W);
kF=kF+1;f=figure(kF); f.figure_size = [1032,550];f.figure_position = [-5,0];f.figure_name
='Восстановление ЭКГ во фронтальных отведениях'; f.background=-2; f.info_message =

94
"Interior10q";
subplot(311);plot(t1,X1,'k');title(Str);ylabel('I, мВ');set(gca(),"grid",[1
1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t1) max(t1) Amin Amax];
subplot(312);plot(t2,X2,'k');ylabel('II, мВ');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t2) max(t2) Amin Amax];
subplot(313);plot(t3,X3,'k'); ylabel('III, мВ'); set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t3) max(t3) Amin Amax];
kF=kF+1;f=figure(kF);f.figure_size = [1032,550];f.figure_position = [-5,0];f.figure_name
='Восстановление ЭКГ во фронтальных отведениях';f.background=-2;f.info_message =
"Interior10q";
W=max(abs([X4 X5 X6]));[Amax,Amin]=SciSkl(W);
subplot(311);plot(t4,X4,'k');ylabel('aVL, мВ');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t4) max(t4) Amin Amax];
subplot(312);plot(t5,X5,'k');ylabel('aVR, мВ');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t5) max(t5) Amin Amax];
subplot(313);plot(t6,X6,'k');ylabel('aVFб мВ');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t6) max(t6) Amin Amax];
endfunction

Interior11q.sci
function kF=Interior11q(V,kF,Str)
//Восстановление ЭКГ в грудных отведениях
t1=V.t1B;V1=V.V1;t2=V.t2B;V2=V.V2;t3=V.t3B;V3=V.V3;t4=V.t4B;V4=V.V4;t5=V.t5B;V5=V.V5
;t6=V.t6B;V6=V.V6;//распаковка
Lthickness=2;
W=max(abs([V1 V2 V3]));[Amax,Amin]=SciSkl(W);
kF=kF+1;f=figure(kF);f.figure_size = [1032,550];f.figure_position = [-5,0];f.figure_name
='Восстановление ЭКГ в грудных отведениях';f.background=-2;f.info_message = "Interior11q";
subplot(311);plot(t1,V1,'k');ylabel('V1, мВ');title(Str);set(gca(),"grid",[1 1]);
set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;
p1=a.children;p2=p1.children;p2.thickness=Lthickness;a.data_bounds=[min(t1) max(t1) Amin
Amax];
subplot(312);plot(t2,V2,'k');ylabel('V2, мВ');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t2) max(t2) Amin Amax];

95
subplot(313);plot(t3,V3,'k');ylabel('V3, мВ');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t3) max(t3) Amin Amax];
W=max(abs([V4 V5 V6]));[Amax,Amin]=SciSkl(W);
kF=kF+1;f=figure(kF);f.figure_size = [1032,550];f.figure_position = [-5,0];f.figure_name
='Восстановление ЭКГ в грудных отведениях';f.background=-2;f.info_message = "Interior11q";
subplot(311);plot(t4,V4,'k');ylabel('V4б мВ');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t4) max(t4) Amin Amax];
subplot(312);plot(t5,V5,'k');ylabel('V5, мВ');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t5) max(t5) Amin Amax];
subplot(313);plot(t6,V6,'k');ylabel('V6, мВ');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3; a.y_label.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t6) max(t6) Amin Amax];
endfunction

Interior12q.sci
function kF=Interior12q(V,kF,Str)
// Для выявления признаков синусовой тахикардии / 1-ая комп., усреднение по СА
t1F;X1=V.X1;t2=V.t2F;X2=V.X2;t3=V.t3F;X3=V.Xavf;t4=V.t4B;V4=V.V4;t5=V.t5B;V5=V.V5;t6=
V.t6B;V6=V.V6;//распаковка отведений
Lthickness=2;
[a,b]=max(abs(X2));
t1=(t1-t1(b))/1000;t2=(t2-t2(b))/1000;t3=(t3-t3(b))/1000;t4=(t4-t4(b))/1000;t5=(t5-t5(b))/1000;
t6=(t6-t6(b))/1000;
W=max(abs([X1 X2 X3 V4 V5 V6]));[Amax,Amin]=SciSkl(W);
kF=kF+1;f=figure(kF);f.figure_size = [1032,550];f.figure_position = [-5,0];f.figure_name ='Для
выявления признаков синусовой тахикардии / 1-ая комп., усреднение по СА';f.background=-2;
f.info_message = "Interior12q";
subplot(231);title('I');plot(t1,X1,'k');ylabel('мВ');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t1) max(t1) Amin Amax];
subplot(232);title('II');plot(t2,X2,'k');ylabel('мВ');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t2) max(t2) Amin Amax];
subplot(233);title('avf');plot(t3,X3,'k');ylabel('мВ');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t3) max(t3) Amin Amax];
subplot(234);title('V4');plot(t4,V4,'k');ylabel('мВ');set(gca(),"grid",[1
1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;p1=a.children;p2=p1.children;

96
p2.thickness=Lthickness;a.data_bounds=[min(t4) max(t4) Amin Amax];
subplot(235);title('V5');plot(t5,V5,'k');ylabel('мВ');set(gca(),"grid",[1
1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t5) max(t5) Amin Amax];
subplot(236);title('V6');plot(t6,V6,'k');ylabel('мВ');set(gca(),"grid",[1
1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness; a.data_bounds=[min(t6) max(t6) Amin Amax];
endfunction

Interior13q.sci
function kF=Interior13q(V,kF,Str)
// Восстановленная ЭКГ из II
t2=V.t2F;X2=V.X2; //распаковка отведений
Lthickness=2;
W=max(abs(X2));[Amax,Amin]=SciSkl(W);
kF=kF+1;f=figure(kF);f.figure_size = [1032,550];f.figure_position = [-5,0];f.figure_name
='Восстановленная ЭКГ из II';f.background=-2;f.info_message = "Interior13q";
plot(t2,X2,'r');ylabel('II, мВ');set(gca(),"grid",[1 1]);title(Str)set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t2) max(t2) Amin Amax];
endfunction

Interior14q.sci
function kF=Interior14q(V,kF,Str)
////распаковка отведений
t2=V.t2F;X2=V.X2;t3=V.t3F;X3=V.X3;t6=V.t6F;X6=V.Xavf;//распаковка отведений
Lthickness=2;
W=max(abs([X2 X3 X6]));[Amax,Amin]=SciSkl(W);
kF=kF+1;f=figure(kF);f.figure_size = [1032,550];f.figure_position = [-5,0];f.figure_name ='Для
выявления экстрасистолы АВ-соединения';f.background=-2;f.info_message = "Interior14q";
subplot(311);plot(t2,X2,'k');ylabel('II, мВ');set(gca(),"grid",[1 1]);title(Str);xlabel('сек.');
set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;
p1=a.children;p2=p1.children;p2.thickness=Lthickness;a.data_bounds=[min(t2) max(t2) Amin
Amax];
subplot(312);plot(t3,X3,'k');ylabel('III, мВ');set(gca(),"grid",[1 1]);xlabel('сек.');
set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;
p1=a.children;p2=p1.children;p2.thickness=Lthickness;a.data_bounds=[min(t3) max(t3) Amin
Amax];
subplot(313);plot(t6,X6,'k');ylabel('aVF, мВ');set(gca(),"grid",[1 1]);xlabel('сек.');

97
set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;
p1=a.children;p2=p1.children;p2.thickness=Lthickness;a.data_bounds=[min(t6) max(t6) Amin
Amax];
endfunction

Interior15q.sci
function kF=Interior15q(V,kF,Str)
//Для выявления желудочковой экстраситолии
t1=V.t1B;V1=V.V1;t2=V.t2B;V2=V.V2;t5=V.t5B;V5=V.V5;t6=V.t6B;V6=V.V6;//распаковка
отведений
Lthickness=2;
W=max(abs([V1 V2 V5 V6]));[Amax,Amin]=SciSkl(W);
kF=kF+1;f=figure(kF);f.figure_size = [1032,550];f.figure_position = [-5,0];f.figure_name ='Для
выявления желудочковой экстраситолии';f.background=-2;f.info_message = "Interior15q";
subplot(411);plot(t1,V1,'k');ylabel('V1, мВ');title(Str);set(gca(),"grid",[1 1]);
set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;
p1=a.children;p2=p1.children;p2.thickness=Lthickness;a.data_bounds=[min(t1) max(t1) Amin
Amax];
subplot(412);plot(t2,V2,'k');ylabel('V2, мВ');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t2) max(t2) Amin Amax];
subplot(413);plot(t5,V5,'k');ylabel('V5, мВ');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t5) max(t5) Amin Amax];
subplot(414);plot(t6,V6,'k');ylabel('V6, мВ');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3;a.y_label.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t6) max(t6) Amin Amax];
endfunction

Interior16q.sci
function kF=Interior16q(V,kF,Str)
//Для выявление нарушений электролитного обмена
t2=V.t2F;X2=V.X2;//распаковка отведений
Lthickness=2;
[a,b]=max(abs(X2));
t2=(t2-t2(b))/1000;
W=max(abs(X2));[Amax,Amin]=SciSkl(W);
kF=kF+1;f=figure(kF); f.figure_size = [1032,550];f.figure_position = [-5,0];f.figure_name
='Выявление нарушений электролитного обмена / 1-ая комп., усреднение по СА';
f.background=-2;f.info_message = "Interior16q";

98
xlabel('сек.');ylabel('мВ');title('II');plot(t2,X2,'k');set(gca(),"grid",[1 1]);a=get("current_axes");
a.title.font_size=3;a.y_label.font_size=3;a.x_label.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a.data_bounds=[min(t2) max(t2) Amin Amax];
endfunction

Interior19q.sci
function kF=Interior19q(kF,OtvSA,PSI1,PS2,Str,deltaT)
//Визуализирует статистики 1-ой и 2-ой кjмпонент. При визуализации используются
гистограммы и Я-оценка
Lthickness=2; nHist=10;
//Выбор отведения для анализа статистик первой компоненты
KNOPKI= ["I" "II" "III" "avl" "avr" "avf" "V1" "V2" "V3" "V4" "V5" "V6"];
//Кнопки с наим-eм отведений должны соотв. порядку столбцов во вводимом файле
Otvedenie=messagebox('Статистики 1-ой и 2-ой компонент - выбор отведения', "modal",
"question",KNOPKI);
if Otvedenie==0 then//соответствует (Х) или (Cancel)
Otvedenie=messagebox('Статистики 1-ой и 2-ой компонент - выбор отведения', "modal",
"question",KNOPKI);
end
[ModaU1,MU1,MinU1,MaxU1,MedianU1,Sample_1]=SciXTEVStatistic(OtvSA,PSI1,Otvedenie);
[Xout_1,w1]=SciKern(Sample_1); [psi1,abscisa1]=SciEVbearer(PSI1(Otvedenie,:)');
[ModaU2,MU2,MinU2,MaxU2,MedianU2,Sample_2]=SciXTEVStatistic(OtvSA,PSI2,Otvedenie);
[Xout_2,w2]=SciKern(Sample_2); [psi2,abscisa2]=SciEVbearer(PSI2(Otvedenie,:)');
kF=kF+1;f=figure(kF);f.figure_size = [1032,550];f.figure_position = [-5,0];f.figure_name
='Статистики первой и третьей компонент';f.background=-2;f.info_message = "";
//Визуализация гистограммы и Я-оценки
subplot(221);plot(Xout_1,w1); histplot(nHist,Sample_1); xlabel('Амплитуда ХТ, мВ');
ylabel('Оценка ПВ ХТ 1-ой компоненты');title('Пациент '+Str);set(gca(),"grid",[1 1]);
set(gca(),"font_size",3);a=get("current_axes"); a.title.font_size=3; p1=a.children;
p2=p1.children;p2.thickness=Lthickness;a=legend('Я-оценка','Гистограмма');a.background=-2;
a.foreground=-2;a.font_color = -1; a.font_size=3;
//Формирование абсциссы при визуализации первой компоненты в интерьере ее статистик
ww=1:max(size(PSI1)); ww=(ww-abscisa1)*deltaT; ww1=min(ww);ww2=max(ww)+.5;
A1=SciMaxAbs([MinU1,MaxU1]);
subplot(222); plot(ww,A1*psi1,[ww1,ww2],[MinU1,MinU1],[ww1,ww2],[MaxU1,MaxU1],
[ww1,ww2],[MU1,MU1],[ww1,ww2],[ModaU1,ModaU1],0,A1,'o'); set(gca(),"grid",[1 1]);
xlabel('сек.');ylabel('мВ');title('Первая компонента в отведении '+KNOPKI(Otvedenie));
set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;
MinU1=(ceil(100*MinU1)-1)/100;MaxU1=(ceil(100*MaxU1)-1)/100;MU1=(ceil(100*MU1)-

99
1)/100;ModaU1=(ceil(100*ModaU1)-1)/100;
a=legend('1-ая компонента','минимум='+mtlb_num2str(MinU1)+' мВ',
'максимум='+mtlb_num2str(MaxU1)+' мВ','среднее='+mtlb_num2str(MU1)+' мВ',
'мода='+mtlb_num2str(ModaU1)+' мВ', 'XT');a.background=-2;a.foreground=-2;a.font_color = -1;
a.font_size=3;
subplot(223); plot(Xout_2,w2);histplot(nHist,Sample_2);xlabel('Амплитуда ХТ,
мВ');ylabel('Оценка ПВ ХТ 3-ей компоненты');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);
a=get("current_axes"); a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness; a=legend('Я-оценка','Гистограмма');a.background=-2;a.foreground=-
2;a.font_color = -1;a.font_size=3;
A2=SciMaxAbs([MinU2,MaxU2]);
subplot(224); plot(ww,psi2*A2,[ww1,ww2],[MinU2,MinU2],[ww1,ww2],[MaxU2,MaxU2],
[ww1,ww2],[MU2,MU2],(abscisa2-abscisa1)*deltaT,A2,'o');set(gca(),"grid",[1 1]);
xlabel('сек.');ylabel('мВ');title('Вторая компонента в отведении '+KNOPKI(Otvedenie));
set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;
MinU2=(ceil(100*MinU2)-1)/100;MaxU2=(ceil(100*MaxU2)-1)/100;MU2=(ceil(100*MU2)-
1)/100;ModaU2=(ceil(100*ModaU2)-1)/100;MedianU2=(ceil(100*MedianU2)-1)/100;
a=legend('2-я компонента', 'минимум='+mtlb_num2str(MinU2)+' мВ',
'максимум='+mtlb_num2str(MaxU2)+' мВ','среднее='+mtlb_num2str(MU2)+' мВ', 'XT');
a.background=-2;a.foreground=-2;a.font_color = -1; a.font_size=3;
endfunction;

Interior20q.sci
function kF=Interior20q(kF,OtvSA,PSI1,PSI2,Str,deltaT)
//Визуализирует статистики 1-ой и 2-ой компонент. При визуализации используются
гистограммы и Я-оценка
Lthickness=2; nHist=10;
//Выбор отведения для анализа статистик первой компоненты
KNOPKI= ["I" "II" "III" "avl" "avr" "avf" "V1" "V2" "V3" "V4" "V5" "V6"];
Otvedenie=messagebox('Статистики 1-ой и 2-ой компонент - выбор отведения', "modal",
"question",KNOPKI);
if Otvedenie==0 then//соответствует (Х) или (Cancel)
Otvedenie=messagebox('Статистики 1-ой и 2-ой компонент - выбор отведения', "modal",
"question",KNOPKI);
end
[ModaU1,MU1,MinU1,MaxU1,MedianU1,Sample_1]=SciXTEVStatistic(OtvSA,PSI1,Otvedenie);
[Xout_1,w1]=SciKern(Sample_1);[psi1,abscisa1]=SciEVbearer(PSI1(Otvedenie,:)');
[ModaU2,MU2,MinU2,MaxU2,MedianU2,Sample_2]=SciXTEVStatistic(OtvSA,PSI2,Otvedenie);
[Xout_2,w2]=SciKern(Sample_2);[psi2,abscisa2]=SciEVbearer(PSI2(Otvedenie,:)');
kF=kF+1;f=figure(kF);f.figure_size = [1032,550];f.figure_position = [-5,0];f.figure_name
='Статистики первой и второй компонент'; f.background=-2;f.info_message = "";

100
subplot(221);plot(Xout_1,w1);histplot(nHist,Sample_1);xlabel('Амплитуда ХТ, мВ');
ylabel('Оценка ПВ ХТ 1-ой компоненты');title('Пациент '+Str);set(gca(),"grid",[1 1]);
set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;a=legend('Я-оценка','Гистограмма');a.background=-2;a.foreground=-2;
a.font_color = -1; a.font_size=3;
ww=1:max(size(psi1));ww=(ww-abscisa1)*deltaT;ww1=min(ww);ww2=max(ww)+.5;
subplot(223);//Визуализация статистик второй компоненты
plot(Xout_2,w2);histplot(nHist,Sample_2);xlabel('Амплитуда ХТ, мВ');ylabel('Оценка ПВ ХТ 2-
ой компоненты');set(gca(),"grid",[1 1]);set(gca(),"font_size",3);a=get("current_axes");
a.title.font_size=3;p1=a.children;p2=p1.children;p2.thickness=Lthickness;a=legend('Я-
оценка','Гистограмма');a.background=-2;a.foreground=-2;a.font_color = -1;a.font_size=3;
A1=SciMaxAbs([MinU1,MaxU1]); A2=SciMaxAbs([MinU2,MaxU2]);
subplot(122);plot(ww,A1*psi1,[ww1,ww2],[MinU1,MinU1],[ww1,ww2],[MaxU1,MaxU1],
[ww1,ww2],[MU1,MU1],0,A1,'o', ww,psi2*A2,[ww1,ww2],[MinU2,MinU2],[ww1,ww2],
[MaxU2,MaxU2], [ww1,ww2],[MU2,MU2],(abscisa2-abscisa1)*deltaT,A2,'o');
set(gca(),"grid",[1 1]);xlabel('сек.');ylabel('мВ');title('Вторая компонента в отведении
'+KNOPKI(Otvedenie));set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3;
p1=a.children;p2=p1.children;p2.thickness=Lthickness;
MinU1=(ceil(100*MinU1)-1)/100;MaxU1=(ceil(100*MaxU1)-1)/100;MU1=(ceil(100*MU1)-
1)/100;ModaU1=(ceil(100*ModaU1)-1)/100;MinU2=(ceil(100*MinU2)-1)/100;
MaxU2=(ceil(100*MaxU2)-1)/100;MU2=(ceil(100*MU2)-1)/100;
ModaU2=(ceil(100*ModaU2)-1)/100;MedianU2=(ceil(100*MedianU2)-1)/100;
a=legend('1-ая компонента','минимум='+mtlb_num2str(MinU1)+' мВ',
'максимум='+mtlb_num2str(MaxU1)+' мВ','среднее='+mtlb_num2str(MU1)+' мВ','ХТ 1', '2-ая
компонента','минимум='+mtlb_num2str(MinU2)+' мВ','максимум='+mtlb_num2str(MaxU2)+'
мВ', 'среднее='+mtlb_num2str(MU2)+' мВ', 'ХТ 4');a.background=-2;a.foreground=-2;
a.font_color = -1; a.font_size=3;
endfunction

Interior21q.sci
function kF=Interior21q(kF,OtvSA,PSI1,PSI3,Str,deltaT)
//Визуализирует статистики 1-ой и 3-ей компонент. При визуализации используются
гистограммы и Я-оценка
Lthickness=2;nHist=10;
//Выбор отведения для анализа статистик первой компоненты
KNOPKI= ["I" "II" "III" "avl" "avr" "avf" "V1" "V2" "V3" "V4" "V5" "V6"];
Otvedenie=messagebox('Статистики 1-ой и 3-ей компонент - выбор отведения', "modal",
"question",KNOPKI);
if Otvedenie==0 then//соответствует (Х) или (Cancel)
Otvedenie=messagebox('Статистики 1-ой и 2-ой компонент - выбор отведения', "modal",
"question",KNOPKI);
end

101
[ModaU1,MU1,MinU1,MaxU1,MedianU1,Sample_1]=SciXTEVStatistic(OtvSA,PSI1,Otvedenie);
[Xout_1,w1]=SciKern(Sample_1);[psi1,abscisa1]=SciEVbearer(PSI1(Otvedenie,:)');
[ModaU3,MU3,MinU3,MaxU3,MedianU3,Sample_3]=SciXTEVStatistic(OtvSA,PSI3,Otvedenie);
[Xout_3,w3]=SciKern(Sample_3);[psi3,abscisa3]=SciEVbearer(PSI3(Otvedenie,:)');
kF=kF+1;f=figure(kF);f.figure_size = [1032,550];f.figure_position = [-5,0];f.figure_name
='Статистики первой и третьей компонент';f.background=-2;f.info_message = "";
subplot(221);plot(Xout_1,w1);histplot(nHist,Sample_1);xlabel('Амплитуда ХТ, мВ');
ylabel('Оценка ПВ ХТ 1-ой компоненты');title('Пациент '+Str); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness; a=legend('Я-оценка','Гистограмма');a.background=-2;a.foreground=-
2;a.font_color = -1; a.font_size=3;
ww=1:max(size(PSI1));ww=(ww-abscisa1)*deltaT; ww1=min(ww);ww2=max(ww)+.5;//задание
временных границ линий, визуализирующих статистики
A1=SciMaxAbs([MinU1,MaxU1]);
subplot(222); plot(ww,A1*psi1,[ww1,ww2],[MinU1,MinU1],[ww1,ww2],[MaxU1,MaxU1],
[ww1,ww2],[MU1,MU1],[ww1,ww2],[ModaU1,ModaU1],0,A1,'o'); set(gca(),"grid",[1 1]);
xlabel('сек.');ylabel('мВ'); title('Первая компонента в отведении '+KNOPKI(Otvedenie));
set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3;p1=a.children;p2=p1.children;
p2.thickness=Lthickness;
MinU1=(ceil(100*MinU1)-1)/100;MaxU1=(ceil(100*MaxU1)-1)/100;MU1=(ceil(100*MU1)-
1)/100;ModaU1=(ceil(100*ModaU1)-1)/100;
a=legend('1-ая компонента', 'минимум='+mtlb_num2str(MinU1)+' мВ',
'максимум='+mtlb_num2str(MaxU1)+' мВ', 'среднее='+mtlb_num2str(MU1)+' мВ',
'мода='+mtlb_num2str(ModaU1)+' мВ','XT');a.background=-2;a.foreground=-2;a.font_color = -1;
a.font_size=3;
subplot(223);plot(Xout_3,w3); histplot(nHist,Sample_3); xlabel('Амплитуда ХТ, мВ');
ylabel('Оценка ПВ ХТ 3-ей компоненты');set(gca(),"grid",[1 1]); set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness;a=legend('Я-оценка','Гистограмма');a.background=-2;a.foreground=-2;
a.font_color = -1; a.font_size=3;
A3=SciMaxAbs([MinU3,MaxU3]);
subplot(224);plot(ww,psi3*A3, [ww1,ww2],[MinU3,MinU3],[ww1,ww2],[MaxU3,MaxU3],
[ww1,ww2],[MU3,MU3],(abscisa3-abscisa1)*deltaT,A3,'o'); set(gca(),"grid",[1 1]);
xlabel('сек.');ylabel('мВ'); title('Третья компонента в отведении '+KNOPKI(Otvedenie));
set(gca(),"font_size",3);a=get("current_axes");a.title.font_size=3;p1=a.children; p2=p1.children;
p2.thickness=Lthickness;
MinU3=(ceil(100*MinU3)-1)/100;MaxU3=(ceil(100*MaxU3))/100;MU3=(ceil(100*MU3)-1)/100;
ModaU3=(ceil(100*ModaU3)-1)/100;MedianU3=(ceil(100*MedianU3)-1)/100;
a=legend('3-я компонента', 'минимум='+mtlb_num2str(MinU3)+' мВ',
'максимум='+mtlb_num2str(MaxU3)+' мВ', 'среднее='+mtlb_num2str(MU3)+' мВ', 'XT');
a.background=-2;a.foreground=-2;a.font_color = -1; a.font_size=3;
endfunction

102
Interior22q.sci
function kF=Interior22q(kF,OtvSA,PSI1,PSI4,Str,deltaT)
//Визуализирует статистики 1-ой и 4-ей кмпонент. При визуализации используются
гистограммы и Я-оценка
Lthickness=2;nHist=10;
KNOPKI= ["I" "II" "III" "avl" "avr" "avf" "V1" "V2" "V3" "V4" "V5" "V6"];
Otvedenie=messagebox('Статистики 1-ой и 3-ей компонент - выбор отведения', "modal",
"question",KNOPKI);
if Otvedenie==0 then//соответствует (Х) или (Cancel)
Otvedenie=messagebox('Статистики 1-ой и 2-ой компонент - выбор отведения', "modal",
"question",KNOPKI);
end
[ModaU1,MU1,MinU1,MaxU1,MedianU1,Sample_1]=SciXTEVStatistic(OtvSA,PSI1,Otvedenie);
[Xout_1,w1]=SciKern(Sample_1);[psi1,abscisa1]=SciEVbearer(PSI1(Otvedenie,:)');
[ModaU4,MU4,MinU4,MaxU4,MedianU4,Sample_4]=SciXTEVStatistic(OtvSA,PSI4,Otvedenie);
[Xout_4,w4]=SciKern(Sample_4);[psi4,abscisa4]=SciEVbearer(PSI4(Otvedenie,:)');
kF=kF+1;f=figure(kF);f.figure_size = [1032,550];f.figure_position = [-5,0];f.figure_name
='Статистики первой и 4-ой компонент'; f.background=-2;f.info_message = "";
subplot(221); plot(Xout_1,w1); histplot(nHist,Sample_1); xlabel('Амплитуда ХТ, мВ');
ylabel('Оценка ПВ ХТ 1-ой компоненты'); title('Пациент '+Str); set(gca(),"grid",[1 1]);
set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3; p1=a.children; 2=p1.children;
p2.thickness=Lthickness; a=legend('Я-оценка','Гистограмма'); a.background=-2; a.foreground=-2;
a.font_color = -1; a.font_size=3;
ww=1:max(size(PSI1)); ww=(ww-abscisa1)*deltaT; ww1=min(ww);ww2=max(ww)+.5;
A1=SciMaxAbs([MinU1,MaxU1]);
subplot(222); plot(ww,A1*psi1,[ww1,ww2],[MinU1,MinU1],[ww1,ww2],[MaxU1,MaxU1],
[ww1,ww2],[MU1,MU1],[ww1,ww2],[ModaU1,ModaU1],0,A1,'o');set(gca(),"grid",[1 1]);
xlabel('сек.');ylabel('мВ'); title('Первая компонента в отведении '+KNOPKI(Otvedenie));
set(gca(),"font_size",3); a=get("current_axes");a.title.font_size=3;p1=a.children; p2=p1.children;
p2.thickness=Lthickness;
MinU1=(ceil(100*MinU1)-1)/100;MaxU1=(ceil(100*MaxU1)-1)/100;MU1=(ceil(100*MU1)-
1)/100;ModaU1=(ceil(100*ModaU1)-1)/100;
a=legend('1-ая компонента', 'минимум='+mtlb_num2str(MinU1)+' мВ',
'максимум='+mtlb_num2str(MaxU1)+' мВ', 'среднее='+mtlb_num2str(MU1)+' мВ',
'мода='+mtlb_num2str(ModaU1)+' мВ', 'XT');a.background=-2;a.foreground=-2;a.font_color = -1;
a.font_size=3;
subplot(223); plot(Xout_4,w4);histplot(nHist,Sample_4);xlabel('Амплитуда ХТ, мВ');
ylabel('Оценка ПВ ХТ 3-ей компоненты'); set(gca(),"grid",[1 1]); set(gca(),"font_size",3);
a=get("current_axes");a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness;
a=legend('Я-оценка','Гистограмма');a.background=-2;a.foreground=-2;a.font_color = -1;
a.font_size=3;

103
A4=SciMaxAbs([MaxU4,MinU4]);
subplot(224); plot(ww,psi4*A4, [ww1,ww2],[MinU4,MinU4],[ww1,ww2],[MaxU4,MaxU4],
[ww1,ww2],[MU4,MU4], (abscisa4-abscisa1)*deltaT,A4,'o'); set(gca(),"grid",[1 1]);
xlabel('сек.');ylabel('мВ'); title('Четвертая компонента в отведении '+KNOPKI(Otvedenie));
set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3; p1=a.children; p2=p1.children;
p2.thickness=Lthickness;
MinU4=(ceil(100*MinU4)-1)/100;MaxU4=(ceil(100*MaxU4)-1)/100;
MU4=(ceil(100*MaxU4)-1)/100;ModaU4=(ceil(100*ModaU4)-1)/100;
MedianU4=(ceil(100*MedianU4)-1)/100;
a=legend('4-я компонента','минимум='+mtlb_num2str(MinU4)+' мВ',
'максимум='+mtlb_num2str(MaxU4)+' мВ', 'среднее='+mtlb_num2str(MU4)+' мВ','XT');
a.background=-2;a.foreground=-2;a.font_color = -1; a.font_size=3;
endfunction;

Interior23q.sci
function kF=Interior23q(kF,Otv,PSI1,PSI2,PSI3,PSI4,Str)
// Предназначена для исследования вариабельности PQRST-цикла в зависимости от
значения амплитуд характерных точек СВ1, СВ2, СВ3, СВ4. При исследовании
вариабельности пользователь вводит необходимые значения, которые показываются в
интерьерах их плотностей вероятностей. По умолчанию (в начале работы программы)
используются значения, соответствующие модам плотносей вероятностей.
k_KPDE1=1.2; k_KPDE2=k_KPDE1; k_KPDE3=k_KPDE1; k_KPDE4=k_KPDE1;
Lthickness=3;
KNOPKI= ["I" "II" "III" "avl" "avr" "avf" "V1" "V2" "V3" "V4" "V5" "V6"];
Otvedenie=messagebox('Статистики 1-ой и 2-ой компонент - выбор отведения', "modal",
"question",KNOPKI);
if Otvedenie==0 then//соответствует (Х) или (Cancel)
Otvedenie=messagebox('Статистики 1-ой и 2-ой компонент - выбор отведения', "modal",
"question",KNOPKI);
end
T=OtvSA(Otvedenie).SA;
[a,abscisa]=max(abs(PSI1(Otvedenie,:)));
TT=SciLinTrendElim(T); TVosst=TT*PSI1(Otvedenie,:)'*PSI1(Otvedenie,:);
meanU1=mean(TVosst,'r'); Sample_1=TVosst(:,abscisa)';
a=mean(Sample_1)-5*msd(Sample_1); b=mean(Sample_1)+5*msd(Sample_1); Xinp_1=a:(b-
a)/100:b; [w1,Xout_1,KSigma2_1]=KPDE1(Sample_1,Xinp_1,k_KPDE1);
[MaxForModaU1,ModaU1]=max(w1); ModaU1=Xinp_1(ModaU1);
[ordinata,abscisa]=max(abs(PSI2(Otvedenie,:)));
TVosst=TT*PSI2(Otvedenie,:)'*PSI2(Otvedenie,:); meanU2=mean(TVosst,'r');
Sample_2=TVosst(:,abscisa)'; a=mean(Sample_2)-5*msd(Sample_2);

104
b=mean(Sample_2)+5*msd(Sample_2); Xinp_2=a:(b-a)/100:b;
[w2,Xout_2,KSigma2_2]=KPDE1(Sample_2,Xinp_2,k_KPDE2);
[MaxForModaU2,ModaU2]=max(w2); ModaU2=Xinp_2(ModaU2);
psi2=PSI2(Otvedenie,:);
if max(psi2)~=max(abs(psi2)) then; psi2=-psi2; end; psi2=psi2/max(psi2);
[ordinata,abscisa]=max(abs(PSI3(Otvedenie,:)));
Tvosst=TT*PSI3(Otvedenie,:)'*PSI3(Otvedenie,:); meanU3=mean(TVosst,'r');
Sample_3=TVosst(:,abscisa)'; a=mean(Sample_3)-5*msd(Sample_3);
b=mean(Sample_3)+5*msd(Sample_3); Xinp_3=a:(b-a)/100:b;
[w3,Xout_3,KSigma2_3]=KPDE1(Sample_3,Xinp_3,k_KPDE3);
[MaxForModaU3,ModaU3]=max(w3); ModaU3=Xinp_3(ModaU3);
psi3=PSI3(Otvedenie,:); if max(psi3)~=max(abs(psi3)) then; psi3=-psi3;end;
psi3=psi3/max(psi3);
[ordinata,abscisa]=max(abs(PSI4(Otvedenie,:)));
TVosst=TT*PSI4(Otvedenie,:)'*PSI4(Otvedenie,:); meanU4=mean(TVosst,'r');
Sample_4=TVosst(:,abscisa)'; a=mean(Sample_4)-5*msd(Sample_4);
b=mean(Sample_4)+5*msd(Sample_4); Xinp_4=a:(b-a)/100:b;
[w4,Xout_4,KSigma2_4]=KPDE1(Sample_4,Xinp_4,k_KPDE4);
[MaxForModaU4,ModaU4]=max(w4); ModaU4=Xinp_4(ModaU4);
psi4=PSI4(Otvedenie,:); if max(psi4)~=max(abs(psi4)) then; psi4=-psi4; end;
psi4=psi4/max(psi4);
kF=kF+1;Flag1=1; kVisio=1;
while Flag1~=0
f=figure(kF);f.figure_size = [1032,550];f.figure_position = [-5,0];f.figure_name ='Исследование
вариаций PQRST-цикла';f.background=-2;f.info_message = "";
subplot(241);plot(Xout_1,w1,[ModaU1,ModaU1],[0,max(w1)]);xlabel('ХТ, мВ');ylabel('ЯО 1-ой
комп.'); set(gca(),"grid",[1 1]);set(gca(),"font_size",3); a=get("current_axes");a.title.font_size=3;
p1=a.children; p2=p1.children; p2.thickness=Lthickness;
subplot(242); plot(Xout_2,w2,[ModaU2,ModaU2],[0,max(w2)]); xlabel('ХТ, мВ');ylabel('ЯО 2-ой
комп.'); set(gca(),"grid",[1 1]); set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3;
p1=a.children;p2=p1.children; p2.thickness=Lthickness;
subplot(245); plot(Xout_3,w3,[ModaU3,ModaU3],[0,max(w3)]); xlabel('ХТ, мВ');ylabel('ЯО 3-ей
комп.');set(gca(),"grid",[1 1]); set(gca(),"font_size",3); a=get("current_axes");a.title.font_size=3;
p1=a.children; p2=p1.children; p2.thickness=Lthickness;
subplot(246); plot(Xout_4,w4,[ModaU4,ModaU4],[0,max(w4)]); xlabel('ХТ, мВ');ylabel('ЯО 4-ой
комп.'); set(gca(),"grid",[1 1]); set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3;
p1=a.children; p2=p1.children; p2.thickness=Lthickness;
subplot(122);title('Пациент '+Str); MU1=mean(Sample_1);
[MaxForModaU1,ModaU1]=max(w1); ModaU1=Xinp_1(ModaU1);
SummaFrom1To4=ModaU1*meanU1/MU1+psi2*ModaU2+psi3*ModaU3+psi4*ModaU4;
[a,b]=max(SummaFrom1To4); nSummaFrom1To4=max(size(SummaFrom1To4));
ww=((1:nSummaFrom1To4)-b)*deltaT; if kVisio==1 then; plot(ww,SummaFrom1To4);

105
kVisio=kVisio+1; SummaFrom1To4_mod=SummaFrom1To4; else;
plot(ww,SummaFrom1To4_mod,ww,SummaFrom1To4); end; set(gca(),"grid",[1 1]);
xlabel('сек.');ylabel('мВ'); title('Сумма 1-4 компонент; пациент '+Str+'; отведение
'+KNOPKI(Otvedenie)); set(gca(),"font_size",3); a=get("current_axes"); a.title.font_size=3;
p1=a.children; p2=p1.children; p2.thickness=Lthickness;
if kVisio==1 then; a=legend('Моды 1-4');else; a=legend('Моды 1-4','Вариация'); end;
a.background=-2;a.foreground=-2;a.font_color = -1; a.font_size=3;
txt_1=['Амплитуда ХТ 1-ой компоненты (мВ)';'Амплитуда ХТ 2-ой компоненты (мВ)';
'Амплитуда ХТ 3-ой компоненты (мВ)'; 'Амплитуда ХТ 4-ой компоненты (мВ)'];
txt_2=[mtlb_num2str(ModaU1); mtlb_num2str(ModaU2); mtlb_num2str(ModaU3);
mtlb_num2str(ModaU4)];
sig = x_mdialog('Ампдитуды ХТ 1-4 комп.',txt_1,txt_2);
if sum(size(sig))==0;Flag1=0;else; ModaU1=eval(sig(1)); ModaU2=eval(sig(2));
ModaU3=eval(sig(3)); ModaU4=eval(sig(4)); close;end;
end;
endfunction;

SciSkl.sci
function [Amax,Amin]=SciSkl(W)
//Шкалирование
if (W<0.002) then; Amax=0.002; Amin=-0.002; end;
if (W>=0.002)&(W<0.003) then; Amax=0.003; Amin=-0.003; end;
if (W>=0.003)&(W<0.004) then; Amax=0.004; Amin=-0.004; end;
if (W>=0.003)&(W<0.004) then; Amax=0.004; Amin=-0.004; end;
if (W>=0.004)&(W<0.005) then; Amax=0.005; Amin=-0.005; end;
if (W>=0.005)&(W<0.01) then; Amax=0.01; Amin=-0.01; end;
if (W>=0.01)&(W<0.02) then; Amax=0.02; Amin=-0.02; end;
if (W>=0.02)&(W<0.03) then; Amax=0.03; Amin=-0.03; end;
if (W>=0.03)&(W<0.04) then; Amax=0.04; Amin=-0.04; end;
if (W>=0.04)&(W<0.05) then; Amax=0.05; Amin=-0.05; end;
if (W>=0.05)&(W<0.06) then; Amax=0.06; Amin=-0.06; end;
if (W>=0.06)&(W<0.07) then; Amax=0.07; Amin=-0.07; end;
if (W>=0.07)&(W<0.08) then; Amax=0.08; Amin=-0.08; end;
if (W>=0.08)&(W<0.1) then; Amax=0.1; Amin=-0.1; end;
if (W>=0.1)&(W<0.2) then; Amax=0.2; Amin=-0.2; end;
if (W>=0.2)&(W<0.3) then; Amax=0.3; Amin=-0.3; end;
if (W>=0.3)&(W<0.5) then; Amax=0.5; Amin=-0.5; end;
if (W>=0.5)&(W<=1) then; Amax=1; Amin=-1; end;
if (W>=1)&(W<2) then; Amax=2; Amin=-2; end;
if (W>=2)&(W<3) then; Amax=3; Amin=-3; end;
if (W>=3)&(W<5) then; Amax=5; Amin=-5; end;
if (W>=5)&(W<10) then; Amax=10; Amin=-10; end;
if (W>=10)&(W<20) then; Amax=20; Amin=-20; end;
if (W>=20)&(W<40) then; Amax=40; Amin=-40; end;
if (W>=40)&(W<60) then; Amax=60; Amin=-60; end;
if (W>=60) then; Amax=100; Amin=-100; end;
endfunction

106
SciJust.sci
function [NmaxNew]=SciJust(NmaxOld,s,D)
// Предназначена для юстировки положения максимумов NmaxOld - старое положение
максимумов. s — отведение, D - диапазон юстировки, NmaxNew - новое положение
максимумов.
ns=max(size(s));
for i=1:max(size(NmaxOld))
if (NmaxOld(i)-D)>=1 then
n1=NmaxOld(i)-D;
else
n1=1;
end//if (NmaxOld(i)-D)>=1
if (NmaxOld(i)+D)<=ns then
n2=NmaxOld(i)+D;
else
n2=ns;
end//if (NmaxOld(i)+D)<=ns
s0=zeros(1,ns);
s0(n1:n2)=abs(s(n1:n2));
[a,b]=max(s0);
NmaxNew(i)=b;
end//for i
endfunction

SciMxtr.sci
function [newNmax1,newNmax2]=SciMxtr(Nmax1,Nmax2)
//Используется при определении положеният R-зубцов. Вызывается из
SciMaxRandMeanRR. Анализизует последовательноси Nmax1 - последовательность
переходов снизу-вверх через порог и Nmax2 - последовательность переходов сверху-вниз
через порог. Задача состоит в том, чтобы 1. При несовпадении длины матриц-строк Nmax1 и
Nmax2 корректно убрать лишние элементы. 2. В случае совпадения длины матриц-строк
Nmax1 и Nmax2 обработать случай когда порядок следования переходов некорректен. 3.
После "наведения порядка" предполагается убрать первую и последнюю пары переходов
что необходимо для того, чтобы не возникли препятствия при формировании первого и
последнего ЭТА. Такая предупредительная мера не лишняя и гарантирует корректное
восстановление ЭКГ. Возможны 4 ситуации, которые схнматически изображены ниже:
// (о - переход снизу-вверх, х - переход сверху-вниз)
// Ситуация 1:
// о--х----------о--х---------------о--х-----------о
// в этой ситуации число "о" и "х" не равное - неоъходимо убрать последний "о"
//
// Ситуация 2:
// х----------о--х---------------о--х-----------о--х

107
// в этой ситуации число "о" и "х" не равное - неоъходимо убрать первый "х"
//
// Ситуация 3:
// х----------о--х---------------о--х---------------о
// в этой ситуации число "о" и "х" равное. Тем не менее,неоъходимо убрать в начале "х" и
в конце "о"
// Ситуация 4:
// о--х----------о--х---------------о--х-----------о--х
// не требует мер вмешательства

n1=max(size(Nmax1));//число элементов в Nmax1


n2=max(size(Nmax2));//число элементов в Nmax2
n=min([n1,n2]);
Nmxtr=[Nmax1,Nmax2];
minNmxtr=min(Nmxtr);
maxNmxtr=max(Nmxtr);
if n1~=n2 then//Ситуации 1-3
if (Nmax1(n1)>Nmax2(n2))&(Nmax1(1)<Nmax2(1)) then// Ситуация 1
Nmax11=Nmax1(1:n1-1);
nn=(max(size(Nmax11))-1);
newNmax1=Nmax11(2:nn);
newNmax2=Nmax2(2:nn);
end//для ситуации 1
if (Nmax1(n1)<Nmax2(n2))&(Nmax1(1)>Nmax2(1)) then// Ситуация 2
Nmax22=Nmax2(2:n2);
nn=(max(size(Nmax22))-1);
newNmax1=Nmax1(2:nn);
newNmax2=Nmax22(2:nn);
end//для ситуации 2
else
if (minNmxtr==Nmax2(1))&(maxNmxtr==Nmax1(n1)) then// Ситуация 3
Nmax11=Nmax1(1:(n1-1));
Nmax22=Nmax2(2:n2);
nn=(max(size(Nmax22))-1);
newNmax1=Nmax11(2:nn);

108
newNmax2=Nmax22(2:nn);
else
nn=(max(size(Nmax2))-1);
newNmax1=Nmax1(2:nn);
newNmax2=Nmax2(2:nn);
end//для ситуации 3
end//для ситуации 1-3
//Тест для ситуации 1
//Nmax1=[1,5,10,15,20,27];Nmax2=[2,6,11,16,21];[a,b]=SciMxtr(Nmax1,Nmax2);
// Результат:
//a = 5. 10. 15.
//b = 6. 11. 16.

//Тест для ситуации 2


//Nmax1=[5,10,15,20,27];Nmax2=[2,6,11,16,21,28];[a,b]=SciMxtr(Nmax1,Nmax2);
// Результат:
//a = 10. 15 20
//b = 11. 16. 21
//Тест для ситуации 3
//Nmax1=[5,10,15,20,27];Nmax2=[2,6,11,16,21];[a,b]=SciMxtr(Nmax1,Nmax2);
// Результат:
//a = 10. 15.
//b = 11. 16.
//Тест для ситуации 4
//Nmax1=[1,5,10,15,20,27];Nmax2=[2,6,11,16,21,28];[a,b]=SciMxtr(Nmax1,Nmax2);
// Результат:
//a = 5. 10. 15. 20.
//b = 6. 11. 16. 21.
endfunction;

SciLinTrendElim.sci
function TT=SciLinTrendElim(T)
//Элиминирование линейного тренда из СА
mT=size(T,2);for ii=1:size(T,1); A=T(ii,1)+(T(ii,mT)-T(ii,1))*((1:mT)-1)/(mT-1);
T(ii,:)=T(ii,:)-A; end;TT=T;
endfunction;

109
KPDE1.sci
function [w,Xout,KSigma2]=KPDE1(Sample,Xinp,k)
// K-kern. P-probability.D-density. E-estimation. 1 - гауссовское ядро и критерий равенства
дисперсий. Sample - матрица строка выборки, X - аргумент ядерной оценки, w - гауссовская
ядерная оценка плотности вероятностей, k -отношение дисперсии оценки к выборочной
дисперсии.
MeanSample=mean(Sample); X=Xinp; Nsample2=size(Sample,2); DSample=sum((Sample-
MeanSample).^2);
if k>=1; Ksigma2=(k/(NSample2-1)-1/NSample2)*DSample;end;
if k<1; KSigma2=k*DSample/(NSample2-1)/NSample2;end;
for i=1:NSample2;K(i,:)=exp(-((X-Sample(1,i)).^2)/(2*KSigma2))/NSample2/(sqrt(2*
%pi*KSigma2));end;
w=sum(K,'r');Xout=X;//гауссовская Я-оценка и выходной аргумент
endfunction

SciStat.sci
function [Min,Mean,Moda,Median,Max]=SciStat(k_KPDE,nKern,Sample)
//Вычисляет статистики выборки Sample: Min – минимум, Mean – максимум, Moda - мода (на
основе ядерной оценки с параметром сглаживания k_KPDE), Max – максимум. nKern -
параметр дискретизации области определения Я-оценки
//формирование ЯО
a=mean(Sample)-5*msd(Sample); b=mean(Sample)+5*msd(Sample); Xinp=a:(b-a)/nKern:b;
[w,Xout,KSigma2]=KPDE1(Sample,Xinp,k_KPDE);
//Вычисление моды
[MaxForModa,Moda]=max(w); Moda=Xinp(Moda);//мода, определенная по ядерной оценке
//вычисление остальных статистик
Mean=mean(Sample); Max=max(Sample); Min=min(Sample); Median=median(Sample);
endfunction

SciXTEVStatistic.sci
function
[KompModaXT,KompMeanXT,KompMinXT,KompMaxXT,KompMedianXT,Samp]=SciXTEVSta
tistic(OtvSA,PSI,Otvedenie)
// Предназначена для вычисления статистик амплитуд характерных компонент,
соответствующих СВ, которому соответствует PSI. Возвращаемые переменные
KompModaXT, KompMeanXT, KompMinXT, KompMaxXT, KompMedianXT. Характерные
точки (ХТ) собственного вектора определяются как абсциссы СВ, в которых он максимально
отклоняется от оси абсцисс. Алгоритм определения статистики ХТ сводится к следующим
шагам: 1. Определяется абсцисса ХТ. 2. Для всех элементов СА (в отведениях)
восстанавливаются соответствующие компоненты СА. 3. Определяется выборка значений

110
восстановленных компонент элементов ансамбля для абсциссы п.1. 4. По выборкам п.3
вычисляются статистики, которые вносятся в соответствующие переменные.
k_KPDE=1.2;nKern = 100;//параметр сглаживания (отношение дисперсии Я-оценки к
выборочной дисперсии выборки) и параметр дискретизации области определения Я-оценки
//Чтение СА из стуктуры OtvSA(Otvedenie).СA (формируется в 8-ом кейсе)
TT=OtvSA(Otvedenie).SA;//Это СА из отведения с номером Otvedenie
//Обработка компоненты, соответствующей PSI. Восстановление СА первых компонент
TVosst=TT*PSI(Otvedenie,:)'*PSI(Otvedenie,:);//восстановление
//Определение авсциссы ХТ для первой компоненты
[a,abscisa]=max(abs(PSI(Otvedenie,:)));
//Формирование выборки значений 1-ой компоненты в ХТ
Sample=TVosst(:,abscisa)';//выборка в ХТ
[KompMinXT,KompMeanXT,KompModaXT,KompMedianXT,KompMaxXT]=SciStat(k_KPDE,n
Kern,Sample);
Samp=Sample;
endfunction

SciEVbearer.sci
function [bpsi,abscisa]=SciEVbearer(psi)
//Превращает СВ в носитель его формы, который имеет форму, пропорциональную СВ,
//но с единичной амплитудой в ХТ
[a,abscisa]=max(abs(psi));
if psi(abscisa) < 0 then;psi=-psi;end;bpsi=psi/max(abs(psi));
endfunction;

SciKern.sci
function [X,w]=SciKern(Sample)
//формирование ЯО
nKern=100; nSample=max(size(Sample)); k_KPDE=(nSample-1)/nSample+1.12*nSample^-0.4;
a=mean(Sample)-5*msd(Sample); b=mean(Sample)+5*msd(Sample); Xinp=a:(b-a)/nKern:b;
[w,X,KSigma2]=KPDE1(Sample,Xinp,k_KPDE);
endfunction;

SciMaxAbs.sci
function Y=SciMaxAbs(X)
// X - матрица строка, Y - число - тот элемент Х,
// который имеет максимальную абсолютную величину.

111
[a,b]=max(abs(X)); Y=X(b);
endfunction

SciQRSsum.sci
function[Q,R,S,SUM,tauQRS]=SciQRSsum(V1)
// Определяет сумму зубцов Q, R, S - с учетом знаков. EV1 – первая компонента, S - искомая
сумма.
nV1=max(size(V1)); u=1; [R,nR]=max(abs(V1));
if EV1(nR)<0 then; u=-1;V1=-V1; end;
i=nR;G0=V1(nR);G=G0;
while (i<nV1)&(G<=G0); i=i+1; G=V1(i); if G<G0 then; G0=G;end; end;
S=G0; tS=i-1; i=nR;G0=V1(nR);G=G0;
while (i>1)&(G<=G0); i=i-1; G=V1(i); if G<G0 then; G0=G; end; end;
Q=G0; tQ=i-1; Q=Q*u; R=R*u; S=S*u; SUM=(Q+R+S); tauQRS=tS-tQ;
endfunction

SciAlpha.sci
function kF=SciAlpha(QRSI,QRSIII,kF)
// Для графического определения угла Alpha. QRSI - Q+R+S в I отведении, QRSIII - Q+R+S в
III отведении. Рисует график см.рис.31 в книге Зубдинов Ю.И. Азбука ЭКГ и боли в сердце.-
Изд. 19-е.-Ростов н/Д:Феникс,2015,- 247 с.
kF=kF+1;f=figure(kF);f.figure_size =[450,600];f.figure_position = [-5,0];f.figure_name
='Табличное определение угла отклонения электрической оси сердца';f.background=-2;
f.info_message = "";
if (QRSI>0)&(QRSIII>0) then;plot(10*QRSI,10*QRSIII,'or',[0,10],[0,0],'y',[0,10],[0,2.3],'--y',
[0,10],[0,5.3],'m',[0,10],[0,10],'--m',[0,4.3],[0,10],'c',[0,2.3],[0,10],'--c',[0,0],[0,10],'k');
set(gca(),"grid",[1 1]);a=get("current_axes");a.title.font_size=3;a.axes_reverse = ["off","on","off"];
a.y_location = "right";p1=a.children;p2=p1.children;p2.thickness=Lthickness;a.data_bounds=[-10
10 -10 10];b=legend('Факт','+30','+40','+50','+60','+70','+80','+90');b.background=-2;b.foreground=-
2;b.font_color = -1;end;
if (QRSI>0)&(QRSIII<0) then;plot(10*QRSI,10*QRSIII,'or',[0,10],[0,0],'y',[0,10],[0,-2],'--y',
[0,10],[0,-3.3],'m',[0,10],[0,-4.9],'--m',[0,10],[0,-6.5],'c',[0,10],[0,-8],'--c',[0,10],[0,-10],'k',[0,8],[0,-
10],'--k',[0,6.7],[0,-10],'y',[0,5],[0,-10],'--yy',[0,3.6],[0,-10],'m',[0,2],[0,-10],'--m',[0,0],[0,-10],'k');
set(gca(),"grid",[1 1]);a=get("current_axes");a.title.font_size=3;a.axes_reverse = ["off","on","off"];
a.y_location = "right";p1=a.children;p2=p1.children;p2.thickness=Lthickness;a.data_bounds=[-10
10 -10 10];b=legend('Факт','+30','+20','+10','0','-10','-20','-30','-40','-50','-60','-70','-80','-
90');b.background=-2;b.foreground=-2;b.font_color = -1;b.legend_location = "in_lower_right";
end;
if (QRSI<0)&(QRSIII<0) then;plot(10*QRSI,10*QRSIII,'or',[0,-10],[0,0],'y',[0,-10],[0,-2.3],'--y',
[0,-10],[0,-5.3],'m',[0,-10],[0,-10],'--m',[0,-4.3],[0,-10],'c',[0,-2.3],[0,-10],'--c',[0,0],[0,-10],'k');
set(gca(),"grid",[1 1]);a=get("current_axes");a.title.font_size=3;a.axes_reverse = ["off","on","off"];
a.y_location = "right";p1=a.children;p2=p1.children;p2.thickness=Lthickness;a.data_bounds=[-10

112
10 -10 10];b=legend('Факт','-150','-140','-130','-120','-110','-100','-90');b.background=-2;
b.foreground=-2;b.font_color = -1;b.legend_location = "in_upper_right"; end;
if (QRSI<0)&(QRSIII>0) then; plot(10*QRSI,10*QRSIII,'or', [0,-10],[0,0],'y', [0,-10],[0,2],'--y',
[0,-10],[0,3.3],'m', [0,-10],[0,4.9],'--m', [0,-10],[0,6.5],'c', [0,-10],[0,8],'--c', [0,-10],[0,10],'k',
[0,-8],[0,10],'--k', [0,-6.7],[0,10],'y', [0,-5],[0,10],'--yy', [0,-3.6],[0,10],'m', [0,-2],[0,10],'--m',
[0,0],[0,10],'k'); set(gca(),"grid",[1 1]); a=get("current_axes"); a.title.font_size=3; a.axes_reverse =
["off","on","off"]; a.y_location = "right"; p1=a.children; p2=p1.children; p2.thickness=Lthickness;
a.data_bounds=[-10 10 -10 10]; b=legend('Факт','-150','-160','+-170', '+180', '+170', '+160', '+150',
'+140', '+130','+120','+110','+100','+90'); b.background=-2; b.foreground=-2; b.font_color = -1;
b.legend_location = "in_upper_right"; end;
endfunction

Bro2.sce
Clc; n10=0; n=size(PSI1(1,:),2); nn=size(T,1);
//Выбор отведения для анализа статистик первой компоненты
KNOPKI= ["I" "II" "III" "avl" "avr" "avf" "V1" "V2" "V3" "V4" "V5" "V6"];
Notv=messagebox('Сумма 1-4 компонент - выбор отведения', "modal", "question",KNOPKI);
if Notv==0 then; Notv=messagebox('Сумма 1-4 компонент - выбор отведения - выбор
отведения', "modal", "question",KNOPKI); end;
T=OtvSA(Notv).SA;
sig = x_mdialog('Номер начального ЭСА','Введите номер ЭСА','1');
while (sum(size(sig))==0)|(eval(sig)>(nn-2)); sig = x_mdialog('Номер начального ЭСА','Введите
номер ЭСА','1'); end;
Neta=eval(sig);
kF=kF+1; f=figure(kF); f.figure_size = [1032,550]; f.figure_position = [-5,0]; f.figure_name ='ЭТА
- как сумма компонент'; f.background=-2; f.info_message = "";
txt=["Назад" "Вперед". "Закончить работу"];
while n10~=3:
i=0;
for j=0:2
i=5*j;
K1=T(Neta+j,:)*PSI1(Notv,:)'*PSI1(Notv,:); K2=T(Neta+j,:)*PSI2(Notv,:)'*PSI2(Notv,:);
K3=T(Neta+j,:)*PSI3(Notv,:)'*PSI3(Notv,:); K4=T(Neta+j,:)*PSI4(Notv,:)'*PSI4(Notv,:);
ESA=K1+K2+K3+K4; W=max(abs(ESA)); [Amax,Amin]=SciSkl(W);
subplot(3,5,i+1); plot(K1); title('1-ая компонета'); ylabel(mtlb_num2str(Neta+j));
a=get("current_axes");a.data_bounds=[1 max(size(ETA_1)) Amin Amax]; a.axes_visible =
["off","off","off"];a.box = "off"; p1=a.children;p2=p1.children;p2.thickness=2;
subplot(3,5,i+2); plot(K2); title('2-ая компонета'); a=get("current_axes");a.data_bounds=[1
max(size(ETA_1)) Amin Amax]; a.axes_visible = ["off","off","off"];a.box = "off";
p1=a.children;p2=p1.children;p2.thickness=2;
subplot(3,5,i+3); plot(K3); title('3-я компонета'); a=get("current_axes");a.data_bounds=[1

113
max(size(ETA_1)) Amin Amax]; a.axes_visible = ["off","off","off"];a.box = "off";
p1=a.children;p2=p1.children;p2.thickness=2;
subplot(3,5,i+4); plot(K4); title('4-ая компонета'); a=get("current_axes");a.data_bounds=[1
max(size(ETA_1)) Amin Amax]; a.axes_visible = ["off","off","off"];a.box = "off";
p1=a.children;p2=p1.children;p2.thickness=2;
subplot(3,5,i+5); plot(1:n,ESA,1:n,T(Neta+j,:)); title('сумма 1-4 компонент и ЭCА')
;a=get("current_axes");a.data_bounds=[1 max(size(ETA_1)) Amin Amax]; a.axes_visible =
["off","off","off"];a.box = "off"; p1=a.children;p2=p1.children;p2.thickness=2;
end
n10=messagebox('ЭСА №'+mtlb_num2str(Neta)+'-'+mtlb_num2str(Neta+2), "modal",
"question",txt);
if (n10==1)&(Neta>1) then; Neta=Neta-1; end;
if (n10==2)&(Neta<(nn-2)) then; Neta=Neta+1; end;
if n10~=3 then; close; end;
f=figure(kF); f.figure_size = [1032,550]; f.figure_position = [-5,0]; f.figure_name ='ЭТА - как
сумма компонент'; f.background=-2; f.info_message = "";
end

SciSwartz.sci
function PhiGradus=SciSwartz(a,b)
//Определяет угол (в градусах) между векторами [a] и [b] - матрицы строки
CosPhiRad=a*b'/sqrt(a*a'*b*b'); PhiGradus=360*acos(CosPhiRad)/%pi/2;
endfunction

SciNum2Name.sci
function StrName=SciNum2Name(i)
//Преобразует номер отведения (1-12) в его имя

if i==1 then; StrName="I "; elseif i==2; StrName="II "; elseif i==3; StrName="III "; elseif i==4;
StrName="aVR "; elseif i==5; StrName="aVL "; elseif i==6; StrName="aVF "; elseif i==7;
StrName="V1 ";
elseif i==8; StrName="V2 "; elseif i==9; StrName="V3 "; elseif i==10; StrName="V4 "; elseif
i==11; StrName="V5 "; elseif i==12; StrName="V6 "; end;
endfunction

Bro4.sce
clc;
kF=kF+1;f=figure(kF); f.figure_size = [1032,550]; f.figure_position = [-5,0]; f.figure_name
='Ядерные оценки углов (в градусах) между ЭСА и 1-ым носителем'; f.background=-2;
f.info_message = "";

114
for i=1:12; T=OtvSA(i).SA; nn=size(T,1); [b,abscisa]=SciEVbearer(PSI1(i,:));
for j=1:nn; [a,abscisa]=SciEVbearer(T(j,:)); PhiGradus(i,j)=SciSwartz(a,b); end;
end;
MinPhiGradus=min(PhiGradus); MaxPhiGradus=max(PhiGradus);
for i=1:12; [Xout,w]=SciKern(PhiGradus(i,:)); subplot(4,3,i); [c,d]=max(w); plot(Xout,w,
[Xout(d),Xout(d)],[0,c]); ylabel(SciNum2Name(i));
a=get("current_axes");a.data_bounds=[MinPhiGradus MaxPhiGradus min(w) max(w)];
p1=a.children;p2=p1.children;p2.thickness=2; a=legend('Мода='+mtlb_num2str(ceil(Xout(d)))+';
СКО='+mtlb_num2str(ceil(msd(PhiGradus(i,:))))+' - в град.'); a.background=-2; a.foreground=-2;
a.font_color = -1; a.font_size=2; end;

115
Приложение 3. Ядерные оценки плотности вероятностей

Гистограмма представляет собой общепризнанный вид оценки плотности


вероятностей [9]. В качестве альтернативной, но пока не очень
распространенной оценки, можно использовать так называемую ядерную
оценку плотности вероятностей (Kernel density estimation [11]). Будем для
краткости называть ее Я-оценкой .
В общем случае ядерная оценка плотности вероятностей определяется
соотношением
N
1
W я  X , { X i } , П = ∑ Я  X , X i , P , (П3.1)
N i =1

где
W я  X , { X i } , П  - Я-оценка,

Я  X , X i , П  - ядро,

X - аргумент Я-оценки,

{ X i }= X i , 1 : N - выборка,

N - объем выборки,

П - параметр сглаживания Я-оценки.

Ядро должно отвечать следующим свойствам


X , X i , П ∈−∞ , ∞ ,  П3.2.1
Я  X , X i , П ≥0,  П3.2.2

∫ Я  X , X i , П  dx=1.  П3.2.3
−∞

Это те же три свойства, которым должна удовлетворять плотность


вероятностей. Таким образом, любая плотность вероятностей, которую мы
сможем каким-либо образом связать с элементом выборки X i может
претендовать на роль ядра в ядерной оценке. Например, если возьмем
плотность нормального распределения, то получим гауссовское ядро

1  X −X i 2
Я Gauss  X , X i , я = exp {− } , (П3.3)
 я 2  2  2я

116
в котором в качестве параметра сглаживания П выступает я .
С использованием (П3.3), запишем формулу для гауссовской Я-оценки
плотности вероятностей:

1
N
1  X −X i 2
W Я , Gauss  X , { X i } ,  я = ∑ exp {− } , (П3.4)
N i=1  я 2  2  2я

где
 я - параметр сглаживания Я-оценки.

Ниже приведены два критерия выбора параметра сглаживания Я-оценок


плотности вероятностей. Первый критерий основан на выборе такого параметра
сглаживания, чтобы выборочная дисперсия была равна дисперсии, вычисленной
для Я-оценки. Второй критерий является модификацией первого — в нем
величина параметра сглаживания выбирается таким образом, чтобы дисперсия,
вычисленная по ядерной оценке, в R раз превышала лисперсию исходной
выборки.
Дисперсия Я-оценки (П3.4) определяется соотношением

2 2
 Я ,Gauss =∫  X −m Я , X  W Я ,Gauss  X  dX =
−∞

1
N ∞
2
 X −X i
2
1
N
(П3.5)
= ∑ −∞
∫  X −m Я , X  exp − dX = ∑ Ii ,
N  Я 2  i=1
2
2Я N i =1

где

1 ∞
2
 X −X i 2
I i= ∫  X−m Я , X  exp−  dX , (П3.6)
 Я 2  −∞ 2  2Я


1
N ∞  X −X i 2 1
N
m Я , X =∫ X W Я  X  dX= ∑ ∫ X exp−  dX = ∑ X =〈 mX 〉 (П3.7)
−∞
 Я 2  i=1 −∞ 2  2Я N i =1 i

Из (П3.7) следует, что математическое ожидание гауссовской ядерной


оценки совпадает с выборочным средним.
Преобразуем (П3.6):

117
∞ 2
1 y
Ii= ∫  y−m Я , X  X i 2 exp−  dy =
 Я 2  −∞ 2  2Я

y2 ∞
y2 ∞
y2
= K ∫ y 2 exp −  dyKm2Я , X ∫ exp−  dyKX 2i ∫ exp −  dy
−∞ 2  2Я −∞ 2  2Я −∞ 2  2Я

y2 ∞
y2
−2 K m Я , X ∫ y exp −  dy2 K X i ∫ y exp −  dy
−∞ 2  2Я −∞ 2  2Я
(П3.8)

y2
−2 K m Я , X X i ∫ exp −  dy =
−∞ 2  2Я

y2
= K ∫ y 2 exp − 2
 dym 2Я , X X i2−2 m Я , X X i =
−∞ 2 Я

y2

= K ∫ y 2 exp − 2
 dy X i−m Я , X 2 ,
−∞ 2 Я

где
1
K= .
 Я 2 

Выражение (П3.8) может быть упрощено с использованием табличного


интеграла [12, формула 3.461.2]:

 2 n−1! ! 

2

∫ X 2n e− pX = , p0 , (П3.9)
0 2 2 pn p

где
2 n−1! !=1⋅3⋅⋅⋅2 n−1 .

С учетом (П3.9)

−y 2
∫ y 2 exp 2
dy= 3Я 2  и (П3.5) можно преобразовать критерий равенства
−∞ 2 Я

дисперсий к виду
N N N
1 1 1
 2Я , Gauss= ∑ I i= 2Я  ∑  X i −m Я , X 2=〈 2 〉= ∑  X i −〈m X 〉2 =
N i=1 N i=1 N −1 i=1
N (П3.10)
1
= ∑  X i−〈 m Я , X 〉 2

N −1 i=1

118
Из (П3.10) следует выражение для параметра сглаживания гауссовской
Я-оценки при использовании критерия равенства дисперсий:
N
1
 2Я = ∑  X i −〈m X 〉2 . (П3.11)
N  N −1 i=1

Таким образом, если выполняется соотношение (П3.11), то дисперсия


гауссовской Я-оценки совпадает с выборочной дисперсией.
Если мы хотим, чтобы величина дисперсии Я-оценки превышала в R
раз выборочную дисперсию, то есть выполнялось соотношение
2 2
 Я , Gauss=R⋅〈 〉 , (П3.12)
то
N
R 1
−  ∑  X i −〈m X 〉2 .
2
 =Я
(П3.13)
N−1 N i=1

Опыт показывает, что иногда лучше пойти на некоторое умеренное


увеличение дисперсии оценки плотности вероятностей с целью получения
более «гладкой» оценки.
В общем случае для гауссовской Я-оценки, у которой дисперсия в R раз
превышает выборочную, получим соотношение
W Я ,Gauss  X ,{ X i } , R =
1
N
 X − X i 2
= ∑ exp − 2  2  R  , R1,
N  Я  R  2 i=1 Я (П3.14)
N
R 1 N −1
 2Я  R= −  ∑  X i−〈 mX 〉2= R−  〈〉 2 .
N −1 N i=1 N

В [11] для гауссовских ядер при условии аппроксимации плотностей,


близких к гауссовским, рекомендуется использовать параметр сглаживания (так
называемое правило Сильвермана)
 Я ≈1.06∗N −1 /5⋅〈〉 , (П3.15)
где N - объем выборки.
Сопоставление (П3.14) и (П3.15) приводит к величине R , которая
соответствует правилу Сильвермана
N −1 −2 /5
R≈ 1.12⋅N . (П3.16)
N

119
Приложение 4. Рекомендации по изменению открытого
кода в случае изменения набора отведений
В разделе «Подготовка данных» описан вариант подготовки текстового
файла с данными тогда, когда имеется 12 отведений. Возможно вам захочется
модифицировать код для обработки меньшего числа отведений. В этом случае
потребуется модифицировать открытый код. Свяжитесь с авторами (см.
Приложение 1). Мы поможем решить возникшие проблемы.
Авторы

120
Приложение 5. Глоссарий

Ансамбль микроальтернаций (АМА)


АМА получается из СА путем вычисления (для каждого элемента СА) его МА. Все
элементы АМА ортогональны первому СВ, то есть лежат в гиперплоскости размерности
M −1 , где M - размерность пространства СА.

Качество синхронизации
Совокупность критериев, характеризующих отличие оценок положения R-зубцов от
их «истинного» положения.

Ковариационная матрица (КМ)


Ковариационная матрица — квадратная матрица размера M ×M . Вычисляется по
СА. При визуальном анализе в кардиоайгеноскопе не используется, но, оставаясь «за
кадром», определяет «родовые» свойства кардиоайгеноскопии. Ковариационная матрица — с
одной стороны — полностью выявляет взаимосвязи между отсчетами ЭСА, а с другой —
полностью определяется своими собственными векторами и собственными значениями
(число которых — M ). Каждый собственный вектор определяет свою, независимую от
других, аддитивную компоненту ЭСА, описывающую свой тип взаимосвязи между
отсчетами на КИА. Собственные значения определяют среднюю (по СА) энергию
компоненты, представляемой СВ.

Компонента ЭСА (КЭСА)


КЭСА — вектор , получаемый путем умножения СВ на проекцию ЭСА на этот же СВ.

Конечный интервал анализа (КИА)


Пронумерованные по порядку от единицы до M дискреты времени любого
элемента СА. Другими словами КИА — это последовательность 1: M .

Микроальтернация ЭСА (МА)


Разность между ЭСА и первой КЭСА — вектор, ортогональный первому СВ.

Нормированный вектор (НВ)


Вектор единичной длины.

Нормированный спектр СЗ (НССЗ)


НССЗ получается из ССЗ делением на сумму всех СЗ. j - ое СЗ равно средней (по
СА) энергии КЭСА (см. далее).
j - ое значение НССЗ — доля энергии j - ой КЭСА в средней энергии ЭСА.

Носитель
Собственный вектор, нормированный таким образом, что его максимальное уклонение
от оси абсцисс равно единице.

121
Ортонормированный базис (ОНБ)
Система попарно ортогональных (перпендикулярных) векторов, каждый из которых
имеет единичную длину (норму). Ортогональные векторы — векторы, скалярное
произведение которых равно нулю. Норма вектора равна квадратному корню из скалярного
произведения вектора на самого себя.

Проекция ЭСА на СВ
Скалярное произведение между элементом СА и СВ (число).

Синхронизирующее отведение ЭКГ (СО)


Отведение ЭКГ, в котором определены положения R-зубцов и которое затем
используется для построения синхронных ансамблей во всех других отведениях.

Синхронный ансамбль (СА). Элемент СА (ЭСА)


Строится в каждом отведении из отрезков ЭКГ этого отведения, границы которых
определяются, исходя из положения R-зубцов в синхроотведении. Каждый из отрезков,
входящих в СА, будем называть элементом СА. СА характеризуются номером отведения,
величинами левой и правой границы СА в дискретах или секундах, объемом СА (числом
элементов СА) и размерностью СА (числом дискретов СА).

Собственное значение (СЗ). Спектр собственных значений (ССЗ)


СЗ (их число — M ) образуют невозрастающую последовательность — спектр
собственных значений. j - ое СЗ равно средней (по СА) энергии j - ой
КЭСА или, что то же самое, среднему квадрату (по СА) j - ой ГК ЭСА.

Собственный вектор (СВ)


Вычисляется для КМ СА. Собственные векторы (их число — M ) образуют ОНБ.
Каждому СВ соответствует свое собственное значение. СВ упорядочены в порядке
уменьшения СЗ.

Способ синхронизации (СС)


Совокупность операций над сигналом в синхронизирующем отведении, которая
позволяет оценить положение R-зубцов.

Типичная микроальтернация (ТМА)


Нормированный вектор, такой, что сумма квадратов проекций на него всех элементов
АМА максимальна. ТП АМА совпадает со вторым собственным вектором синхронного
ансамбля.

Типичный представитель (ТП)


Нормированный вектор, такой, что сумма квадратов проекций на него всех элементов
СА максимальна. Типичный представитель первого порядка совпадает с первым
собственным вектором синхронного ансамбля.

122
Характерная точка КЭСА
Точка, в которой КЭСА максимально уклоняется от оси абсцисс. Для первой КЭСА,
как правило, совпадает с R-зубцом

123
Приложение 6. Первые компоненты во фронтальных и
грудных отведениях для ЭКГ из [4]

Аритмический синдром

Рис. П6.1. Пациент № 109.

124
Рис. П6.2. Пациент № 147.

125
Рис. П6.3. Пациент № 153.

126
Рис. П6.4. Пациент № 157.

127
Рис. П6.5. Пациент № 177.

128
Рис. П6.6. Пациент № 187.

129
Рис. П6.7. Пациент № 218.

130
Рис. П6.8. Пациент № 258.

131
Рис. П6.9. Пациент № 286.

132
Исакевич Валерий Викторович,
Исакевич Даниил Валерьевич

Кардиоайгеноскоп:
Демонстрационная версия на Scilab

Издательство «Перо»
109052, Москва, Нижегородская ул., д. 29-33, стр. 27, офис 105
Тел.: (495) 973-72-28, 665-34-36
Подписано к использованию 16.03.2016.
Объем 527 Мбайт. Электрон. текстовые данные.(CD-ROM).
Тираж 200 экз. Заказ 162.

133