Скачиваний:
7
Добавлен:
01.12.2022
Размер:
126.74 Кб
Скачать

МИНОБРНАУКИ РОССИИ

САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ

ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)

Кафедра биотехнических систем и технологий

ОТЧЕТ

по лабораторной работе №6

по дисциплине «Методы обработки и анализа биомедицинских сигналов и данных»

Тема: Анализ пульсоксиметрического сигнала.

Вариант 4

Студентки гр. 0502

Лиоско Е.П.

Потько А.А.

Преподаватель

Калиниченко А.Н.

Санкт-Петербург

2022

Цель работы: изучение метода расчета уровня насыщения артериальной

крови кислородом по пульсоксиметрическому сигналу.

Задачи работы:

  • Подготовить программу, реализующую алгоритм обнаружения QRS-комплексов ЭКГ.

  • Используя информацию о положении обнаруженных QRS-комплексов, рассчитать по пульсоксиметрическим сигналам параметр SaO2.

Текст программы

clc;

clear;

close all;

%Алгоритм обнаружения QRS-комплексов ЭКГ

S=load('W6_04.txt'); % сигнал ЭКГ и 2 пульсоксиметрических сигнала

N=length(S);

ECG=S(1:N,1);

Puls_R=S(1:N,2);

Puls_IR=S(1:N,3);

X0=0; % Координата “x” (на экране) нижнего левого угла окна

Y0=0; % Координата “y” (на экране) нижнего левого угла окна

W0=1800; % Ширина окна

H0=800; % Высота окна

figure('Position',[X0,Y0,W0,H0]) % Создание окна

x1=50; % Координата "x" (в окне) нижнего левого угла 1-го поля

y1=100; % Координата "y" (в окне) нижнего левого угла 1-го поля

dy=50;

w=1200; % Ширина

h=100; % Высота

hAxes1=axes('Units','pixels','Position',[x1,y1,w,2*h]);

hAxes2=axes('Units','pixels','Position',[x1,y1+2*h+dy,w,h]);

hAxes3=axes('Units','pixels','Position',[x1,y1+3*h+2*dy,w,h]);

hAxes4=axes('Units','pixels','Position',[x1,y1+4*h+3*dy,w,h]);

%Вывод пульсоксиметрических сигналов

axes(hAxes1)

Fs=500;

T=1/Fs;

tmax=length(S)*T;

t=0:T:tmax-T;

plot (t,Puls_R+50)

hold on

plot (t,Puls_IR-450)

ylim([-800 400])

xlim([0 tmax])

title ('Пульсоксиметрические сигналы')

%Вывод графика ЭКГ

axes(hAxes4)

plot (t,ECG)

xlim([0 tmax])

title ('Сигнал ЭКГ')

%Дифференцирование сигнала ЭКГ

axes(hAxes3)

X=zeros(1,N);

Y=zeros(1,N);

for n=1:N

X(n)=ECG(n);

end

for n=3:N

Y(n)=X(n)-X(n-2);

end

hold on

plot (t,Y,'k')

ylim([-150 100])

xlim([0 tmax])

title ('Дифференцированный сигнал ЭКГ')

%Рассчет массива модулей отсчетов диф. сигнала

axes(hAxes2)

ECG_Dif=abs(Y);

Limit=35;

XLimit(1)=0;

XLimit(2)=tmax-T;

YLimit(1:2)=Limit;

line(XLimit, YLimit)

Jmax=100;

k=0;

j=Jmax;

for i=1:N

j=j+1;

if (ECG_Dif(i)>Limit)&&(j>Jmax)

k=k+1;

QRS (k)=i;

j=0;

end

end

hold on

plot (t,ECG_Dif)

xlim([0 tmax])

title ('Массив модулей отсчетов диф-го и взятого по модулю сигнала ЭКГ')

%Расчет уровня насыщения крови кислородом

axes(hAxes1)

YLimits=get(hAxes1,'YLim');

for i=1:k

XLimits(1:2)=QRS(i)*T;

HLine=line(XLimits,YLimits);

set (HLine,'LineStyle','--')

end

%Средний размах пульсоксиметрических сигналов

D1=0;

for i=1:(k-1)

clear m1

m1=Puls_R(QRS(i):QRS(i+1));

D1=D1+(max(m1)-min(m1));

end

D1=D1/(k-1);% средний размах 1го сигнала

D2=0;

for i=1:(k-1)

clear m2

m2=Puls_IR(QRS(i):QRS(i+1));

D2=D2+(max(m2)-min(m2));

end

D2=D2/(k-1);

a=D2/D1;

SaO2=(0.872-0.16*a)*100/(0.14*a+0.754);

hTxt1=uicontrol('Style','text','String','SaO2=',...

'Position',[2*x1+w,2*h,x1,x1/2],'BackgroundColor',[1 1 1]);

hEd=uicontrol('Style','edit','Position', [3*x1+w,2*h,x1,x1/2],...

'BackgroundColor',[1 1 1],'HorizontalAlignment','left');

set(hEd,'String',num2str(SaO2))

Рисунок 1: Графики сигналов и показатель SaO2

Выводы: в ходе работы был изучен метод расчета уровня насыщения артериальной крови кислородом по пульсоксиметрическому сигналу, написана программа реализующая алгоритм обнаружения QRS-комплексов ЭКГ. В графическом окне получены графики ЭКГ, графики пульсометрических сигналов, график дифференцированного с помощью разностного уравнения сигнала. С помощью массива модулей отсчетов дифференцированного сигнала, получен сигнал, содержащий всплески в местах расположения QRS-комплексов. Рассчитан показатель SaO2 (94.7174%).

Соседние файлы в папке ЛР_6