Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет Калиниченко.doc
Скачиваний:
23
Добавлен:
25.11.2018
Размер:
432.64 Кб
Скачать

Какие процессы отображает каждый зубец

Зубец P отображает процесс деполяризации предсердий. Деполяризация начинается в клетках водителях ритма синусового (синоатриального) узла. Распространяется по проводящим пучкам к правому и левому предсердию. Процесс реполяризации предсердий обычно не виден на поверхностной ЭКГ. Однако выявляется при некоторых заболеваниях (инфаркт предсердий, перикардит, полная поперечная блокада).

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

Зубец T возникает в результате реполяризации желудочков. В этом периоде сердечная мышца находится в покое.

Волна U является непостоянным компонентом ЭКГ. Ее точное происхождение до сих пор остается неясным.

Краткое описание методов, применяемых в данном проекте

В данной работе использовался рекурсивный полосовой фильтр Баттерворта (полоса пропускания от 0 до 30Гц), представленный высоким порядком 10. Он обладает следующими преимуществами:

  1. АЧХ фильтра изменяется монотонно, она максимально гладкая на частотах полосы пропускания и снижается практически до нуля на частотах подавления.

  2. Сравнительно высокий порядок фильтра позволяет не только добиться крутого спада АЧХ, но и получить более линейную ФЧХ на частотах полосы пропускания.

Для разработки данного фильтра использовалась утилита программы Matlab “Filter Design and Analysis Tool”. С описанием полученного фильтра можно ознакомиться в данной работе.

Для исследования полученного ЭКГ без миографических шумов использовались параметрические методы спектрального анализа (модель авторегрессии), так как в таком случае исследования основываются на достаточно реалистичных представлениях о сигнале.

В данной работе использовался метод спектрального оценивания с переключением линейного и логарифмического масштабов - метод Берга с различным порядком (р=5,8,13,20).

Рабочая среда Matlab значительно облегчает работу: знание содержания метода Берга необязательно, достаточно воспользоваться уже имеющимися командами (это касается и расчета спектральной плотности мощности).

Автокорреляционная функция показывает наличие у сигнала внутренних периодичностей. Она всегда равна единице при нулевом сдвиге (т. е. при: т = 0), сим­метрична относительно оси ординат и затухает с увеличением т тем медлен­нее, чем сильнее выражены периодичности в сигнале.

Для вычисления нормированной смещенной оценки автокорреляционной функции в среде Matlab можно воспользоваться командой:

с = xcorr(x,maxlags,'option'),

где Maxlags – границы интервала [-maxlags:maxlags], на котором исследуется АКФ; 'option' – нормирует сигнал таким образом, чтобы при нулевом сдвиге АКФ была равна 1. В нашем случае 'option' заменили на 'coeff', а maxlags=N/2.

В данной работе СПМ и нормированная смещенная оценка АКФ рассчитываются как для исходного, так и для отфильтрованного сигналов, дабы путем сравнения нагляднее показать характерные изменения.

Описание разработанного цифрового фильтра

Экранная форма утилиты MATLAB “Filter Desing and Analysis Tool”

АЧХ – зависимость коэффициента передачи системы (ЦФ) от частоты.

АЧХ в линейном масштабе

АЧХ в логарифмическом масштабе

ФЧХ – зависимость задержки ЦФ от частоты.

Импульсная характеристика – реакция системы на воздействие в виде единичного импульса.

Переходная характеристика – реакция системы на единичное ступенчатое воздействие.

Карта нулей и полюсов

Параметры разработанного фильтра в виде текстового fcf-файла

% Generated by MATLAB(R) 7.0.1 and the Signal Processing Toolbox 6.2.1.

% Generated on: 08-Dec-2009 11:52:47

% Coefficient Format: Decimal

% Discrete-Time IIR Filter (real)

% Filter Structure : Direct-Form II

% Filter Order : 10

% Stable : Yes

% Linear Phase : No

Numerator:

0.0000078645824311173881

0.000078645824311173888

0.00035390620940028246

0.00094374989173408655

0.0016515623105346515

0.0019818747726415816

0.001651562310534651

0.00094374989173408644

0.0003539062094002824

0.000078645824311173888

0.0000078645824311173881

Denominator:

1

-5.187004030285042

12.811436406425322

-19.561083496292191

20.287022752425585

-14.853202315610151

7.7445597051129571

-2.8310495654806203

0.69272255938549376

-0.10225150768123376

0.0069028244093465221

Разностное уравнение фильтра

y(n) =0.000008x(n) + 0.000079x(n-1) + 0.00035x(n-2) + 0.00094x(n-3) +

+ 0.00165x(n-4) + 0.00198x(n-5) + 0.00165x(n-6) + 0.00094x(n-7) +

+ 0.00035x(n-8) + 0.00008x(n-9) + 0.000008x(n-10) + y(n) -5.18700y(n-1) +

+ 12.81144y(n-2) – 19.56108y(n-3) + 20.28702y(n-4) – 14.8532y(n-5) +

+ 7.74456y(n-6) – 2.83105y(n-7) + 0.69272y(n-8) – 0.10225y(n-9) +

+ 0.0069y(n-10)

Передаточная функция фильтра

Ниже представлена блок-схема разработанного фильтра.

Экранные формы разработанной программы

Анализ получаемых программой результатов

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

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

Автокорреляционная функция показывает наличие у сигнала внутренних периодичностей. У обоих сигналов она равна единице при нулевом сдвиге, сим­метрична относительно оси ординат, но с увеличением величины сдвига она не затухает, что говорит о схожести сигнала ЭКГ с синусоидой – значит, у сигналов наблюдаются внутренние периодичности

Приложения

Полный текст разработанной программы

function varargout = proga(varargin)

% PROGA M-file for proga.fig

% PROGA, by itself, creates a new PROGA or raises the existing

% singleton*.

%

% H = PROGA returns the handle to a new PROGA or the handle to

% the existing singleton*.

%

% PROGA('CALLBACK',hObject,eventData,handles,...) calls the local

% function named CALLBACK in PROGA.M with the given input arguments.

%

% PROGA('Property','Value',...) creates a new PROGA or raises the

% existing singleton*. Starting from the left, property value pairs are

% applied to the GUI before proga_OpeningFunction gets called. An

% unrecognized property name or invalid value makes property application

% stop. All inputs are passed to proga_OpeningFcn via varargin.

%

% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one

% instance to run (singleton)".

%

% See also: GUIDE, GUIDATA, GUIHANDLES

% Copyright 2002-2003 The MathWorks, Inc.

% Edit the above text to modify the response to help proga

% Last Modified by GUIDE v2.5 13-Dec-2009 22:30:24

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @proga_OpeningFcn, ...

'gui_OutputFcn', @proga_OutputFcn, ...

'gui_LayoutFcn', [] , ...

'gui_Callback', []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

% End initialization code - DO NOT EDIT

% --- Executes just before proga is made visible.

function proga_OpeningFcn(hObject, eventdata, handles, varargin)

% This function has no output args, see OutputFcn.

% hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% varargin command line arguments to proga (see VARARGIN)

% Choose default command line output for proga

handles.output = hObject;

%определяем раз и навсегда масштаб времени оси х

Fd=250;

handles.T=1/Fd;

handles.tmax=2.5;

handles.t=(0:handles.T:handles.tmax-handles.T);

guidata(hObject, handles);

handles.s=1;

% Update handles structure

guidata(hObject, handles);

% UIWAIT makes proga wait for user response (see UIRESUME)

% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.

function varargout = proga_OutputFcn(hObject, eventdata, handles)

% varargout cell array for returning output args (see VARARGOUT);

% hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure

varargout{1} = handles.output;

% --- Executes on button press in pushbutton1.

function pushbutton1_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

fname=uigetfile('*.txt');

handles.X=load(fname);

handles.N=length(handles.X);

axes(handles.axes1)

plot(handles.t,handles.X)

set(handles.axes1,'Xlim',[0 2.5]);

handles.b=ylim;

xlabel('t')

grid on

% Update handles structure

guidata(hObject, handles);

% --- Executes on button press in pushbutton2.

function pushbutton2_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

load('filter.mat')

handles.Y=filter(Num,Den,handles.X);

axes(handles.axes2)

plot(handles.t,handles.Y,'r')

set(handles.axes2,'Xlim',[0 2.5]);

%set(,'Ylim',handles.b);

xlabel('t')

grid on

% Update handles structure

guidata(hObject, handles);

% --- Executes on button press in pushbutton3.

function pushbutton3_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton3 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

maxlags=fix(handles.N/2);

AKF1=xcorr(handles.X,maxlags,'coeff');

axes(handles.axes4)

lag=handles.tmax/2;

tcov=(-lag:handles.T:lag-handles.T);

plot(tcov,AKF1)

set(handles.axes4,'Xlim',[-1.25 1.25]);

grid on

xlabel('t')

axes(handles.axes5)

AKF2=xcorr(handles.Y,maxlags,'coeff');

plot(tcov,AKF2,'r')

set(handles.axes5,'Xlim',[-1.25 1.25]);

grid on

xlabel('t')

% --- Executes on selection change in listbox2.

function listbox2_Callback(hObject, eventdata, handles)

% hObject handle to listbox2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns listbox2 contents as cell array

% contents{get(hObject,'Value')} returns selected item from listbox2

contents=get(hObject,'Value');

switch contents

case 1

handles.SPD1=pburg(handles.X,5);

handles.SPD2=pburg(handles.Y,5);

case 2

handles.SPD1=pburg(handles.X,8);

handles.SPD2=pburg(handles.Y,8);

case 3

handles.SPD1=pburg(handles.X,13);

handles.SPD2=pburg(handles.Y,13);

case 4

handles.SPD1=pburg(handles.X,20);

handles.SPD2=pburg(handles.Y,20);

end

axes(handles.axes3)

if (handles.s==1)

hold off

plot(handles.SPD1)

hold on

plot(handles.SPD2,'r')

else

hold off

semilogy(handles.SPD1)

hold on

semilogy(handles.SPD2,'r')

end

grid on

hT1 = text(70, 150);

set(hT1, 'FontSize', 12, 'FontWeight', 'Normal', 'FontName', 'Arial',...

'Color', 'b');

hT2 = text(108, 150);

set(hT2, 'FontSize', 12, 'FontWeight', 'Normal', 'FontName', 'Arial',...

'Color', 'r');

guidata(hObject, handles);

% --- Executes during object creation, after setting all properties.

function listbox2_CreateFcn(hObject, eventdata, handles)

% hObject handle to listbox2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

% Hint: listbox controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

% --- Executes on selection change in listbox3.

function listbox3_Callback(hObject, eventdata, handles)

% hObject handle to listbox3 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns listbox3 contents as cell array

% contents{get(hObject,'Value')} returns selected item from listbox3

axes(handles.axes3)

contents=get(hObject,'Value');

switch contents

case 1

handles.s=1;

axes(handles.axes3)

hold off

plot(handles.SPD1)

hold on

plot(handles.SPD2,'r')

case 2

handles.s=0;

hold off

semilogy(handles.SPD1)

hold on

semilogy(handles.SPD2,'r')

end

grid on

hT1 = text(70, 150, 'do');

set(hT1, 'FontSize', 12, 'FontWeight', 'Normal', 'FontName', 'Arial',...

'Color', 'b');

hT2 = text(108, 150, 'posle');

set(hT2, 'FontSize', 12, 'FontWeight', 'Normal', 'FontName', 'Arial',...

'Color', 'r');

guidata(hObject, handles);

% --- Executes during object creation, after setting all properties.

function listbox3_CreateFcn(hObject, eventdata, handles)

% hObject handle to listbox3 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

% Hint: listbox controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit1_Callback(hObject, eventdata, handles)

% hObject handle to edit1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit1 as text

% str2double(get(hObject,'String')) returns contents of edit1 as a double

% --- Executes during object creation, after setting all properties.

function edit1_CreateFcn(hObject, eventdata, handles)

% hObject handle to edit1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit2_Callback(hObject, eventdata, handles)

% hObject handle to edit2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit2 as text

% str2double(get(hObject,'String')) returns contents of edit2 as a double

% --- Executes during object creation, after setting all properties.

function edit2_CreateFcn(hObject, eventdata, handles)

% hObject handle to edit2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit3_Callback(hObject, eventdata, handles)

% hObject handle to edit3 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit3 as text

% str2double(get(hObject,'String')) returns contents of edit3 as a double

% --- Executes during object creation, after setting all properties.

function edit3_CreateFcn(hObject, eventdata, handles)

% hObject handle to edit3 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

% --- Executes during object creation, after setting all properties.

function axes1_CreateFcn(hObject, eventdata, handles)

% hObject handle to axes1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

% Hint: place code in OpeningFcn to populate axes1

30