- •Методы обработки биомедицинских сигналов и данных
- •Методы обработки биомедицинских сигналов и данных
- •Введение
- •Общие указания
- •Лабораторная работа 1. Теорема отсчетов и эффект наложения
- •Основные положения
- •Задание на выполнение работы
- •Порядок выполнения работы
- •Лабораторная работа 2. Цифровая фильтрация экг
- •Основные положения
- •Задание на выполнение работы
- •Порядок выполнения работы
- •Содержание отчета
- •Содержание отчета
- •Лабораторная работа 3. Корреляционный анализ ээг
- •Основные положения
- •Задание на выполнение работы
- •Порядок выполнения работы
- •Содержание отчета
- •Лабораторная работа 4. Спектральный анализ экг
- •Основные положения
- •Задание на выполнение работы
- •Порядок выполнения работы
- •Содержание отчета
- •Лабораторная работа 5. Адаптивный фильтр сетевой наводки
- •Основные положения
- •Задание на выполнение работы
- •Порядок выполнения работы
- •Содержание отчета
- •Лабораторная работа 6. Анализ пульсоксиметрического сигнала
- •Основные положения
- •Задание на выполнение работы
- •Порядок выполнения работы
- •Содержание отчета
- •Лабораторная работа 7. Расчет корреляционной матрицы ээг
- •Основные положения
- •Задание на выполнение работы
- •Порядок выполнения работы
- •Содержание отчета
- •Лабораторная работа 8. Классификация экг с помощью вкф
- •Основные положения
- •Задание на выполнение работы
- •Порядок выполнения работы
- •Содержание отчета
- •Лабораторная работа 9. Векторкардиограмма
- •Основные положения
- •Задание на выполнение работы
- •Порядок выполнения работы
- •Содержание отчета
- •Лабораторная работа 10. Методы ритмокардиографии
- •Основные положения
- •Задание на выполнение работы
- •Порядок выполнения работы
- •Содержание отчета
- •Лабораторная работа 11. Вариабельность сердечного ритма
- •Основные положения
- •Задание на выполнение работы
- •Порядок выполнения работы
- •Содержание отчета
- •Лабораторная работа 12. Исследование ритмов ээг
- •Основные положения
- •Задание на выполнение работы
- •Порядок выполнения работы
- •Содержание отчета
- •Список рекомендованной литературы
- •Приложение. Таблицы вариантов для работ
- •Содержание
- •1 97376, С.-Петербург, ул. Проф. Попова, 5
Содержание отчета
Название, цель и задачи работы.
Тексты программ и изображения графических окон, которые требовалось сохранять в ходе выполнения работы.
Объяснение полученных результатов и выводы.
Лабораторная работа 6. Анализ пульсоксиметрического сигнала
Цель работы: изучение метода расчета уровня насыщения артериальной крови кислородом по пульсоксиметрическому сигналу.
Основные положения
Уровень насыщения артериальной крови кислородом (SaO2) является одним из важнейших физиологических показателей. Обычно его определяют, анализируя пульсоксиметрический сигнал, получаемый с помощью фотодетекторов, реагирующих на свет, излучаемый фотодиодами и проходящий через ткани организма, богатые кровеносными сосудами. Чаще всего датчики и излучатели помещают на палец или на мочку уха.
Для просвечивания используют два источника света:
С длиной волны 600…700 нм (в области красного цвета). В этом диапазоне наблюдается наибольшая разница между оптическими плотностями окисленной крови и крови с пониженным содержанием гемоглобина.
С длиной волны 810…960 нм (в инфракрасной области). В этом диапазоне наблюдается обратный эффект: оптическая плотность крови при ее насыщении кислородом увеличивается.
Параметр SaO2 может быть рассчитан по следующей формуле:
,
где α = Δ2ср/Δ1ср, а Δ1ср и Δ2ср – средние значения размаха колебаний сигналов, полученных при длинах волн 650 и 940 нм соответственно.
Размах колебаний пульсоксиметрического сигнала оценивается в интервале между двумя соседними сокращениями сердца. Для вычисления SaO2 используются величины размаха, усредненные по нескольким последовательным сердечным циклам. Границы каждого кардиоцикла могут быть найдены путем обнаружения QRS-комплексов в сигнале ЭКГ. Простейшим методом обнаружения QRS-комплексов является применение порогового правила к дифференцированному и взятому по модулю сигналу.
Задание на выполнение работы
Подготовить программу, реализующую алгоритм обнаружения QRS-комплексов ЭКГ.
Используя информацию о положении обнаруженных QRS-комплексов, рассчитать по пульсоксиметрическим сигналам параметр SaO2.
Порядок выполнения работы
Алгоритм обнаружения QRS-комплексов ЭКГ. В табл. П.6 приложения для каждого варианта указано имя файла, содержащего три синхронно записанных сигнала: ЭКГ и два пульсоксиметрических сигнала (для красной и инфракрасной областей). Частота дискретизации Fd = 500 Гц.
Перепишите в рабочую папку файл с записью сигналов.
Запустите систему MATLAB.
В главном окне установите путь к рабочей папке.
Создайте новый М-файл и сохраните его под каким-нибудь именем.
Создайте графическое окно, содержащее четыре расположенных друг под другом поля для вывода графиков (см. лаб. раб. 3), а также небольшое свободное пространство справа для вывода результата. Нижнее из полей необходимо сделать вдвое большим по высоте, чем каждое из остальных.
Прочтите из файла сигналы и для удобства дальнейших расчетов разнесите сигналы по отдельным массивам, например:
S=load('R6_00.txt'); % Чтение сигналов из файла
N=length(S); % Число отсчетов в каждом сигнале
ECG=S(1:N,1); % Массив (вектор) отсчетов ЭКГ
Puls_R=S(1:N,2); % Массив “красного” сигнала
Puls_IR=S(1:N,3); % Массив “инфракрасного” сигнала
Выведите в верхнем поле сигнал ЭКГ, соблюдая масштаб по времени.
Выведите в нижнем поле графики обоих пульсоксиметрических сигналов. Для наглядности разместите второй сигнал ниже первого путем вычитания из него подходящей по значению константы. Например:
C=500; % Константа для смещения графика вниз
plot (t,Puls_IR-C) % График “инфракрасного” сигнала
Выполните дифференцирование ЭКГ, используя цифровой фильтр, заданный разностным уравнением y(n) = x(n) – x(n – 2) (см. лаб. раб. 2).
Выведите график дифференцированного сигнала во втором поле.
Рассчитайте массив модулей отсчетов дифференцированного сигнала, используя функцию abs, и выведите график сигнала в третьем окне.
Полученный сигнал должен содержать хорошо выраженные всплески в тех позициях, где в сигнале ЭКГ расположены QRS-комплексы. Поэтому для обнаружения QRS-комплексов достаточно выставить некоторый амплитудный порог, величина которого должна быть выбрана с таким расчетом, чтобы сигнал превышал порог только в области QRS-комплексов.
Визуально оцените по третьему графику подходящую величину порога.
Проведите на графике горизонтальную линию на уровне порога:
Limit=20; % Значение порога
XLimit(1)=0; % Первая координата линии по оси “x”
XLimit(2)=tmax-T; % Вторая координата линии по оси “x”
YLimit(1:2)=Limit; % Координаты линии по оси “y”
line(XLimit, YLimit) % Линия на уровне “Limit”
Здесь переменные tmax и T соответствуют длине фрагмента сигнала и интервалу дискретизации.
Для обнаружения QRS-комплексов можно воспользоваться следующим алгоритмом: последовательные отсчеты сигнала сравниваются со значением порога; если для какого-то отсчета порог превышен, то комплекс считается обнаруженным и индекс текущего отсчета запоминается в специальном массиве (здесь – в массиве Ref); следующие 100 отсчетов (т. е. 200 мс при Fd = 500 Гц) пропускаются (это соответствует зоне нечувствительности алгоритма) и далее процедура повторяется до конца массива.
Напишите фрагмент программы для обнаружения QRS-комплексов по следующему образцу:
Jmax=100; % Ширина зоны нечувствительности
k=0; % Начальное значение счетчика QRS-комплексов
j=Jmax;
for i=1:N % Последовательный перебор отсчетов сигнала
j=j+1; % Счетчик зоны нечувствительности
if (ECG_Dif(i)>Limit)&&(j>Jmax)% Сравнение сигнала с порогом
k=k+1; % Счетчик QRS-комплексов
QRS(k)=i; % Позиция QRS-комплекса
j=0; % Сброс счетчика зоны нечувствительности
end
end
В приведенном тексте программы ECG_Dif – это имя массива модулей отсчетов дифференцированного и взятого по модулю сигнала.
Рассчет уровня насыщения крови кислородом:
В поле графиков пульсоксиметрических сигналов проведите вертикальные пунктирные линии, отмечающие точки обнаружения QRS-комплексов ЭКГ:
axes(hAxes4) % Активизация поля с указателем “hAxes4”
YLimits=get(hAxes4,'YLim'); % Границы графиков по “y”
for i=1:k % Перебор позиций QRS-комплексов
XLimits(1:2)=QRS(i)*T; % Координаты линии по оси “x”
HLine=line(XLimits,YLimits); % Вертикальная линия
set (HLine,'LineStyle','--') % Стиль линии - пунктир
end
Рассчитайте средний размах обоих пульсоксиметрических сигналов, пользуясь следующим образцом:
D1=0; % Начальное значение размаха сигнала “Puls_R”
for i=1:(k-1) % Перебор QRS-комплексов
clear m1 % Предварительное удаление массива “m1”
m1=Puls_R(QRS(i):QRS(i+1)); % Один сердечный цикл
D1=D1+(max(m1)-min(m1)); % Сумма значений размаха
end
D1=D1/(k-1); % Средний размах
Рассчитайте показатель SaO2 по формуле на с. 28 и выведите результат правее графиков пульсоксиметрических сигналов по следующему образцу:
% Текстовый элемент с надписью “SaO2=”:
hTxt1=uicontrol(hFig,'Style','text','String','SaO2=',...
'Position',[x1,y1,w1,h1],'Backgroundcolor',[1 1 1]);
% Поле для вывода значения SaO2:
hEd=uicontrol(hFig,'Style','edit','Position',[x2,y2,w2,h2],...
'Backgroundcolor',[1 1 1],'HorizontalAlignment','left');
set(hEd,'String',num2str(SaO2)) % Вывод значения “SaO2”
Здесь после ключевого слова 'Position' указаны параметры, определяющие положение и размеры создаваемых элементов. Буквами x и y обозначены координаты нижнего левого угла соответствующего элемента, а буквами w и h – горизонтальные и вертикальные размеры.
Сохраните графическое окно и программу.
