МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра БТС
ОТЧЕТ по лабораторной работе №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:
Вывод:
Запись ЭКГ для данной работы снята так, что в ней содержится несколько квадроциклов фонового (нормального) ритма и один паталогический квадроцикл
(желудочковая экстрасистола), который хорошо заметен во всех трех отведениях ЭКГ. На ВКГ это проявляется в том, что паталогическому циклу соответствует отдельная траектория, сильно отличающаяся от траектории для фоновых квадроциклов. Это свидетельствует о совершенно другом характере пространственных электрических процессов, протекающих внутри сердца.