- •Основные положения
- •Задание на выполнение работы
- •Порядок выполнения работы
- •Содержание отчета
- •Вопросы для самоконтроля
- •Основные положения
- •Задание на выполнение работы
- •Порядок выполнения работы
- •Содержание отчета
- •Вопросы для самоконтроля
- •Основные положения
- •Задание на выполнение работы
- •Содержание отчета
- •Вопросы для самоконтроля
- •Основные положения
- •Задание на выполнение работы
- •Порядок выполнения работы
- •Содержание отчета
- •Вопросы для самоконтроля
- •Основные положения
- •Задание на выполнение работы
- •Порядок выполнения работы
- •Содержание отчета
- •Вопросы для самоконтроля
- •Основные положения
- •Задание на выполнение работы
- •Порядок выполнения работы
- •Содержание отчета
- •Вопросы для самоконтроля
- •Основные положения
- •Задание на выполнение работы
- •Порядок выполнения работы
- •Содержание отчета
- •Вопросы для самоконтроля
- •Основные положения
- •Задание на выполнение работы
- •Порядок выполнения работы
- •Содержание отчета
- •Вопросы для самоконтроля
- •Основные положения
- •Задание на выполнение работы
- •Порядок выполнения работы
- •Содержание отчета
- •Вопросы для самоконтроля
- •Основные положения
- •Задание на выполнение работы
- •Порядок выполнения работы
- •Содержание отчета
- •Вопросы для самоконтроля
- •Основные положения
- •Задание на выполнение работы
- •Порядок выполнения работы
- •Содержание отчета
- •Вопросы для самоконтроля
- •Основные положения
- •Задание на выполнение работы
- •Порядок выполнения работы
- •Содержание отчета
- •Вопросы для самоконтроля
- •Содержание
Содержание отчета
1.Название, цель и задачи работы.
2.Тексты программ и изображения графических окон, которые требовалось сохранять в ходе выполнения работы.
3.Распечатки сохраненных корреляционных матриц.
4.Объяснение полученных результатов и выводы.
Вопросы для самоконтроля
1)Что показывает коэффициент взаимной корреляции (КВК) и как он связан с взаимной корреляционной функцией?
2)Почему более корректно говорить «оценка КВК», а не просто
«КВК»?
3)Почему значения КВК лежат в пределах от -1 до +1 (объяснить по формуле)?
4)Какая оценка КВК («нормированная» или «ненормированная», «смещённая» или «несмещённая») рассчитывается в данной работе?
5)Чем отличаются друг от друга сигналы, построенные по п. 5 и по п. 11 работы?
6)Дайте объяснение значениям КВК в любой позиции корреляционной матрицы, построенной для модельных сигналов.
7)Почему корреляционные матрицы, полученные по п. 5 и по п. 11 не отличаются друг от друга, хотя исходные данные для них разные (объяснить по формуле КВК)?
8)Почему корреляционные матрицы симметричны относительно главной диагонали?
9)Найдите на графиках корреляционной матрицы для сигналов ЭЭГ наименьшие и наибольшие значения и дайте интерпретацию этих значений, исходя из вида соответствующих сигналов ЭЭГ.
10)Объясните действие порогового значения для КВК.
43
Лабораторная работа8. КЛАССИФИКАЦИЯ ЭКГ С ПОМОЩЬЮ ВКФ
Цель работы: ознакомление с использованием взаимной корреляционной функции для классификации форм сигналов.
Основные положения
Нормированная смещенная оценка взаимной корреляционной функции (ВКФ) дискретного сигнала рассчитывается по формуле
Rxy (m) = |
1 |
N −∑m−1 x(n +m)y(n), |
|
Nσxσy |
|||
|
n=0 |
где x(n) и y(n) – отсчеты двух сигналов, N – число отсчетов для каждого из них, m – число сдвигов, а σx и σy – среднеквадратичные отклонения. Значения нормированной ВКФ лежат в пределах от –1 до +1. Равенство –1 соответствует противофазности сигналов, а случаи равенства 0 и +1 соответствуют отсутствию линейной зависимости и полной линейной зависимости.
Задачей работы является исследование возможности использования ВКФ для дифференциации форм QRS-комплексов ЭКГ, относящихся к фоновому ритму сердца, от комплексов патологического происхождения.
Задание на выполнение работы
•Выполнить расчет ВКФ для фрагментов реальной Э КГ, содержащих QRS-комплексы, относящиеся к фоновому ритму и к патологии.
•Используя значения ВКФ, осуществить разбиение QRS-комплексов ЭКГ на два класса по сходству их форм.
Порядок выполнения работы
Расчет ВКФ для фрагментов реальной записи ЭКГ. В файлах, имена которых указаны в табл. П.8 приложения, содержатся фрагменты записей ЭКГ и данные их верификации.
1. Запустите систему MATLAB, установите в главном окне путь к рабочей папке, перепишите в эту папку файл с записью ЭКГ и файл верификации QRS-комплексов, соответствующие вашему варианту.
Файл ЭКГ содержит отсчеты сигнала с частотой дискретизации 250 Гц. Заданный фрагмент ЭКГ имеет длительность 10 с и содержит QRS-ком-
44
плексы двух отчетливо различимых классов формы: нормального ритма и патологии. Файл верификации содержит два столбца значений, в которых для каждого из QRS-комплексов указаны: номер отсчета, соответствующего середине комплекса, и идентификатор класса формы: «1» – для фонового ритма (нормы) и «2» – для патологии.
|
|
|
|
|
|
|
|
|
2. Создайте новый М-файл и со- |
|
|
|
|
|
|
|
|
|
храните его под каким-нибудь именем. |
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3. Создайте рабочее окно про- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
граммы по образцу, приведенному на |
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
рисунке, и разместите на нем 8 полей |
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
4 |
|
5 |
|
9 |
|
для вывода графиков (поля 1–8) и од- |
|
|
|
|
|
|
но поле редактирования (поле 9, см. |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
лаб. раб. 5). Рекомендуется задать вы- |
|
6 |
|
777 |
|
8 |
|
|
|
|
|
|
7 |
|
|
|
|
соту поля 2 равной 60 пикселам. |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
В команде размещения окна редактирования укажите в качестве свойства ‘Callback’ имя другой программы, которая будет вызываться при вводе в это поле нового значения.
4.Загрузите оба заданных файла в отдельные переменные при помощи команды load.
5.В поле 1 постройте график ЭКГ, соблюдая масштаб по оси времени.
6.Используя команду set, установите для поля 2 пределы оси абсцисс от 0 до максимальной длительности фрагмента сигнала.
7.В поле 2 выведите порядковые номера QRS-комплексов и идентификаторы класса формы:
NQRS=length(Ver(:,1)); |
% Число QRS-комплексов |
for i=1:NQRS |
% QRS-комплексов |
x= Ver (i,1)*T; |
% Координата комплекса по оси абсцисс |
axes(hAxes2);
text(x,0.85,num2str(i)); % Порядковый номер QRS-комплекса text(x,0.6,num2str(Ver(i,2)),'Color','b'); % Тип формы
end
Приведенный фрагмент программы выводит в поле 2 порядковые номера и идентификаторы типа формы комплексов точно напротив позиций соответствующих комплексов ЭКГ в поле 1. Здесь переменная Ver содержит данные, загруженные ранее из файла верификации, функция num2str преобразует число в текстовый вид, а второй параметр в команде text задает позицию по ординате для текста, выводимого в поле 2.
45
8. Используя информацию, отображаемую в полях 1 и 2, определите номера QRS-комплексов, которые далее будут использоваться в качестве образцов для классов нормы и патологии, а также двух других комплексов, принадлежащих к соответствующим классам, например:
N0=1, P0=2; % Номера образцов «нормы» и «патологии» N1=3, P1=5; % Номера других комплексов обоих классов
9. Задайте размер окна для расчета ВКФ и определите максимальное число сдвигов при расчете ВКФ:
L=51; % Размер окна (в отсчетах) для расчета ВКФ Smax=(L-1)/2; % Максимальное число сдвигов при расчете ВКФ
10.Создайте четыре массива, содержащие QRS-комплексы, выбранные
всоответствии с п. 9, например:
ind0=Ver(N0,1); % Индекс центрального отсчета QRS-комплекса
QRS_N0=ECG(ind0-Smax:ind0+Smax); % Запись комплекса в массив
11. Создайте переменную времени для вывода графиков в поля 3–8:
tc=-T*Smax:T:T*Smax; % здесь Т – интервал дискретизации ЭКГ
12.Используя созданную в предыдущем пункте переменную времени, постройте в полях 3 и 6 графики QRS-комплексов, выбранных в качестве образцов для классов «норма» и «патология» соответственно.
13.Удалите линейный тренд из всех четырех QRS-комплексов, например:
QRS_N0=detrend(QRS_N0); % Удаление линейного тренда
14. В каждом из полей 4, 5, 7 и 8 следует построить следующие графики:
–QRS-комплекс, используемый в качестве образца (синий цвет);
–сравниваемый с образцом QRS-комплекс (зеленый цвет);
–ВКФ для данных двух комплексов (красный пунктир).
При этом распределение графиков по полям должно быть следующим:
–поле 4: образец «норма», сравниваемый комплекс «норма»;
–поле 5: образец «норма», сравниваемый комплекс «патология»;
–поле 7: образец «патология», сравниваемый комплекс «норма»;
–поле 8: образец «патология», сравниваемый комплекс «патология». Пример для поля 5:
axes(hAxes5); |
% Активация поля 5 |
|
c=xcorr(QRS_N0,QRS_P1,Smax,'coeff'); % Расчет ВКФ |
||
plot(tc,QRS_N0) |
% |
Образец «норма» |
hold on |
% |
Сравниваемый комплекс |
plot(tc,QRS_P1,'g') |
46
plot(tc,c,':r') |
% График ВКФ |
|
set(hAxes5,'YLim',[-1 1]); |
% Пределы по оси ординат |
|
grid on |
% |
Показать линовку |
title('N-P'); |
% |
Заголовок |
Если задание выполнено правильно, то при сравнении комплексов, относящихся к одинаковым классам формы (поля 4 и 8), значения ВКФ в центре (при нулевом сдвиге) должны быть близки к единице, в двух других случаях – должны получиться значительно меньшими. Это демонстрирует способность ВКФ выявлять сходство форм сигналов.
15. Рассчитайте и занесите в отдельные массивы максимальные значения ВКФ в диапазоне сдвигов ±5 отсчетов для всех возможных случаев сравнения образцов классов «норма» и «патология» с QRS-комплексами, содержащимися в записи ЭКГ. Например, для образца класса «норма»:
ds=5; |
% Максимальный сдвиг для расчета ВКФ |
|
for i=1:NQRS |
% Позиция очередного QRS-комплекса |
|
iQRS=Ver(i,1); |
||
QRS=ECG(iQRS-Smax:iQRS+Smax); |
% Чтение комплекса |
|
QRS=detrend(QRS); |
% Удаление тренда |
|
c=xcorr(QRS_N0,QRS,ds,'coeff'); |
% Расчет ВКФ |
|
cN(i)=max(c); |
% Определение максимума и запись в массив |
end
Разбиение QRS-комплексов ЭКГ на два класса по сходству их форм.
В этой час ти работы необходимо написать программу, которая будет вызываться при вводе каждого нового числа в окне редактирования и использовать введенное значение в качестве порога для процедуры классификации форм QRS-комплексов.
16.Создайте М-файл и сохраните его под именем, совпадающим с указанным в качестве свойства ‘Callback’ поля редактирования (см. лаб. раб. 5).
17.В качестве первого оператора должно стоять объявление функции, название которой должно совпадать с именем M-файла, например:
function R08_P2() % Имя M-файла должно быть «R08_P2.m»
18. Напишите команды получения числа из поля редактирования:
str=get(hEdit,'String'); |
% |
Получение числа в виде текста |
corLim = str2double(str); |
% |
Преобразование в переменную |
Здесь hEdit – указатель на поле редактирования, а переменная corLim содержит введенное значение порога.
47