Скачиваний:
17
Добавлен:
08.04.2022
Размер:
1.05 Mб
Скачать

МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра БТС

ОТЧЕТ по лабораторной работе №9

по дисциплине «ПСОБМД» ТЕМА: Векторная диаграмма

Вариант 4

Студентка гр. 7501

 

Фалевская А.А.

Студент гр. 7501

 

Исаков А.О.

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

 

 

Ровша М.В.

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

2020

Цель работы: ознакомление с методом вектокардиограммы.

Основные положения:

Векторкардиография – метод исследования сердца, основанный на регистрации изменений за сердечный цикл суммарного вектора электродвижущих сил сердца в проекции на плоскость.

Векторкардиографическая кривая строится по трем отведениям X, Y и Z

(система отведений Франка), которые являются ортогональными отведениями.

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

Задание на выполнение работы:

Построение графиков ЭКГ в трех ортогональных отведениях.

Построение двухмерных и трехмерных ВКГ для всей записи ЭКГ.

Построение ВКГ для фрагментов ЭКГ, содержащих кардиоциклы классов «норма» и «патология».

Обработка результатов:

Работа была выполнена в расширении App Designer для удобства построения графиков.

classdef Laba_9 < matlab.apps.AppBase

%Properties that correspond to app components properties (Access = public)

UIFigure matlab.ui.Figure Label matlab.ui.control.Label

EditField matlab.ui.control.EditField EditField_2Label matlab.ui.control.Label

EditField_2 matlab.ui.control.EditField

UIAxes2_2 matlab.ui.control.UIAxes UIAxes2_3 matlab.ui.control.UIAxes UIAxes matlab.ui.control.UIAxes UIAxes2 matlab.ui.control.UIAxes UIAxes2_4 matlab.ui.control.UIAxes end

%Callbacks that handle component events methods (Access = private)

%Code that executes after component creation function startupFcn(app)

data = load("R09-04.txt"); global T X Y Z

F=250;

T=1/F;

X = data(:,1); Y = data(:,2); Z = data(:,3); t = 0:T:8;

t = t(:,1:2000); plot(app.UIAxes,t,X,t,Y-0.5,t,Z-1) grid(app.UIAxes,'on') hold(app.UIAxes,'on')

t1 = 0;

t2 = 8;

app.EditField.Value = num2str(t1); app.EditField_2.Value = num2str(t2); global marker1 marker2 Lim

Lim = get(app.UIAxes,'YLim');

marker1 = plot(app.UIAxes,[t1 t1],Lim,"Color",'k',"LineStyle","--"); marker2 = plot(app.UIAxes,[t2 t2],Lim,'Color','k',"LineStyle","--"); i1 = fix(t1/T)+1;

i2 = fix(t2/T); plot(app.UIAxes2,X(i1:i2),Y(i1:i2)) plot(app.UIAxes2_2,X(i1:i2),Z(i1:i2)) plot(app.UIAxes2_3,Y(i1:i2),Z(i1:i2)) plot3(app.UIAxes2_4,X(i1:i2),Y(i1:i2),Z(i1:i2)) app.UIAxes2.XLim = [-2 2.5];

app.UIAxes2.YLim = [-1.5 2.5]; app.UIAxes2_2.XLim = [-2 2.5]; app.UIAxes2_2.YLim = [-1.5 2.5]; app.UIAxes2_3.XLim = [-2 2.5]; app.UIAxes2_3.YLim = [-1.5 2.5]; grid(app.UIAxes2,'on') grid(app.UIAxes2_2,'on') grid(app.UIAxes2_3,'on') grid(app.UIAxes2_4,'on') app.UIAxes2_4.ZLabel.String = 'Z'; end

% Value changed function: EditField function EditFieldValueChanged(app, event) global value value2 marker1 Lim X Y Z T value = app.EditField.Value;

value = str2double(value); value2 = app.EditField_2.Value; value2 = str2double(value2); if value <0

value = 0;

elseif value > value2 value = value2;

end delete(marker1);

marker1 = plot(app.UIAxes,[value value],Lim,"Color",'k',"LineStyle","--"); i1 = fix(value/T)+1;

i2 = fix(value2/T); plot(app.UIAxes2,X(i1:i2),Y(i1:i2))

plot(app.UIAxes2_2,X(i1:i2),Z(i1:i2)) plot(app.UIAxes2_3,Y(i1:i2),Z(i1:i2)) plot3(app.UIAxes2_4,X(i1:i2),Y(i1:i2),Z(i1:i2)) end

%Value changed function: EditField_2 function EditField_2ValueChanged(app, event) global value2 value marker2 Lim X Y Z T value = app.EditField.Value;

value = str2double(value); value2 = app.EditField_2.Value; value2 = str2double(value2); if value2 <0

value2 = 0;

elseif value2 < value value2 = value;

end delete(marker2);

marker2 = plot(app.UIAxes,[value2 value2],Lim,"Color",'k',"LineStyle","--"); i1 = fix(value/T)+1;

i2 = fix(value2/T); plot(app.UIAxes2,X(i1:i2),Y(i1:i2)) plot(app.UIAxes2_2,X(i1:i2),Z(i1:i2)) plot(app.UIAxes2_3,Y(i1:i2),Z(i1:i2)) plot3(app.UIAxes2_4,X(i1:i2),Y(i1:i2),Z(i1:i2)) end

end

%Component initialization

methods (Access = private)

%Create UIFigure and components function createComponents(app)

%Create UIFigure and hide until all components are created app.UIFigure = uifigure('Visible', 'off'); app.UIFigure.Position = [100 100 1070 648]; app.UIFigure.Name = 'MATLAB App';

%Create Label

app.Label = uilabel(app.UIFigure); app.Label.HorizontalAlignment = 'right'; app.Label.Position = [62 566 87 22]; app.Label.Text = 'Левая граница';

% Create EditField

app.EditField = uieditfield(app.UIFigure, 'text'); app.EditField.ValueChangedFcn = createCallbackFcn(app, @EditFieldValueChanged, true);

app.EditField.Position = [164 566 100 22];

% Create EditField_2Label app.EditField_2Label = uilabel(app.UIFigure);

app.EditField_2Label.HorizontalAlignment = 'right'; app.EditField_2Label.Position = [275 566 95 22]; app.EditField_2Label.Text = 'Правая граница';

% Create EditField_2

app.EditField_2 = uieditfield(app.UIFigure, 'text'); app.EditField_2.ValueChangedFcn = createCallbackFcn(app, @EditField_2ValueChanged, true); app.EditField_2.Position = [385 566 100 22];

% Create UIAxes2_2

app.UIAxes2_2 = uiaxes(app.UIFigure); title(app.UIAxes2_2, 'ВКГ для отведений XZ') xlabel(app.UIAxes2_2, 'X') ylabel(app.UIAxes2_2, 'Z')

app.UIAxes2_2.PlotBoxAspectRatio = [1.66949152542373 1 1]; app.UIAxes2_2.XTick = [-2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5]; app.UIAxes2_2.YTick = [-1.5 -1 -0.5 0 0.5 1 1.5 2 2.5]; app.UIAxes2_2.Position = [249 150 275 170];

% Create UIAxes2_3

app.UIAxes2_3 = uiaxes(app.UIFigure); title(app.UIAxes2_3, 'ВКГ для отведений YZ') xlabel(app.UIAxes2_3, 'Y') ylabel(app.UIAxes2_3, 'Z')

app.UIAxes2_3.PlotBoxAspectRatio = [1.66949152542373 1 1]; app.UIAxes2_3.XTick = [-2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5]; app.UIAxes2_3.YTick = [-1.5 -1 -0.5 0 0.5 1 1.5 2 2.5]; app.UIAxes2_3.Position = [523 150 309 170];

% Create UIAxes

app.UIAxes = uiaxes(app.UIFigure);

title(app.UIAxes, 'Построение графиков ЭКГ в трех ортогональных отведениях') xlabel(app.UIAxes, 'X')

ylabel(app.UIAxes, 'Y') app.UIAxes.Position = [28 369 813 185];

% Create UIAxes2

app.UIAxes2 = uiaxes(app.UIFigure);

title(app.UIAxes2, 'ВКГ для отведений XY') xlabel(app.UIAxes2, 'X') ylabel(app.UIAxes2, 'Y')

app.UIAxes2.XTick = [-2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5]; app.UIAxes2.YTick = [-1.5 -1 -0.5 0 0.5 1 1.5 2 2.5]; app.UIAxes2.Position = [1 151 248 170];

% Create UIAxes2_4

app.UIAxes2_4 = uiaxes(app.UIFigure); title(app.UIAxes2_4, 'ВКГ для отведений XYZ') xlabel(app.UIAxes2_4, 'X') ylabel(app.UIAxes2_4, 'Y') app.UIAxes2_4.Position = [817 151 318 219];

% Show the figure after all components are created app.UIFigure.Visible = 'on';

end

end

% App creation and deletion methods (Access = public)

% Construct app function app = L_9

%Create UIFigure and components createComponents(app)

%Register the app with App Designer registerApp(app, app.UIFigure)

%Execute the startup function runStartupFcn(app, @startupFcn) if nargout == 0

clear app

end

end

% Code that executes before app deletion function delete(app)

% Delete UIFigure when app is deleted delete(app.UIFigure)

end

end

end

Построение графиков в трехмерном объеме и трех плоскостях проекций на временном интервале от 0 до 8 секунд:

Построение графиков в трехмерном объеме и трех плоскостях проекций на временном интервале от 2 до 3 секунд:

Построение графиков в трехмерном объеме и трех плоскостях проекций на временном интервале от 6 до 7 секунд:

Далее показано вращение объемного графика относительно двух выбранных осей. Вращение вектокардиограммы до плоскости XY:

Вращение вектокардиограммы до плоскости XZ:

Вращение вектокардиограммы до плоскости YZ:

Вывод:

Запись ЭКГ для данной работы снята так, что в ней содержится несколько квадроциклов фонового (нормального) ритма и один паталогический квадроцикл

(желудочковая экстрасистола), который хорошо заметен во всех трех отведениях ЭКГ. На ВКГ это проявляется в том, что паталогическому циклу соответствует отдельная траектория, сильно отличающаяся от траектории для фоновых квадроциклов. Это свидетельствует о совершенно другом характере пространственных электрических процессов, протекающих внутри сердца.

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