Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Калиниченко-МУ_.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
994.82 Кб
Скачать

Содержание отчета

  1. Название, цель и задачи работы.

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

  3. Объяснение полученных результатов и выводы.

Лабораторная работа 11. Вариабельность сердечного ритма

Цель работы: ознакомление с частотными методами анализа вариабельности сердечного ритма, сравнительная оценка параметрических и непараметрических методов спектрального анализа.

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

Анализ вариабельности сердечного ритма (ВСР) основан на расчете оценок статистических и частотных характеристик последовательностей интервалов между сокращениями сердца (кардиоинтервалов). Одним из наиболее распространенных подходов является частотный анализ ВСР, суть которого заключается в расчете спектральных оценок сигнала и определении по ним суммарных мощностей в трех диапазонах частот:

  • VLF (Very Low Frequency) от 0,003 до 0,04 Гц;

  • LF (Low Frequency) от 0,04 до 0,15 Гц;

  • HF (High Frequency) от 0,15 до 0,4 Гц.

Перед расчетом спектра последовательность кардиоинтервалов преобразуется в равномерно дискретизованный сигнал с частотой отсчетов 4 Гц, для чего используют кусочно-полиномиальную сплайн-интерполяцию.

Известны два основных подхода к получению спектральных оценок:

  • непараметрические методы, основанные на преобразовании Фурье;

  • параметрические методы, основанные на модели авторегрессии (АР).

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

  • Построение ритмограммы входного сигнала.

  • Расчет и вывод графика равномерно дискретизованного сигнала.

  • Расчет спектральных оценок и частотных показателей ВСР.

Порядок выполнения работы

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

  1. Запустите систему MATLAB, установите в главном окне путь к рабочей папке и перепишите в нее файл с записью сигнала, соответствующий варианту.

  2. Создайте новый М-файл и сохраните его под каким-нибудь именем. В качестве первого оператора должно стоять объявление функции:

function R11_P1() % Объявление головной программы как функции

  1. С оздайте рабочее окно программы по образцу, приведенному на рисунке, и разместите на нем 4 поля для вывода графиков (13 и 5), группу из двух «радиокнопок» (поле 4, см. далее), ползунок (поле 6, см. далее) и поле редактирования 7. Рекомендуется задать ширину поля 1 равной 900 пикселам.

Группа из двух «радиокнопок» представляет собой орган управления, служащий для выбора из двух альтернативных вариантов, и создается следующим образом:

hGroup4=uibuttongroup('Units','pixels',... % Группа кнопок

'Position',[x4 y4 w4 h4]);

% Верхняя кнопка с надписью 'Periodogram' (Периодограмма):

rb1=uicontrol('Style','Radio','String','Periodogram',...

'Position',[5 30 90 20],'parent',hGroup4);

% Нижняя кнопка с надписью 'Welch method' (Метод Уэлча):

rb2=uicontrol('Style','Radio','String','Welch method',...

'Position',[5 10 90 20],'parent',hGroup4);

Здесь x4, y4, w4, h4 – координаты и размеры всей группы, а аналогичные параметры каждой из кнопок указаны относительно границ группы.

  1. Определите имя функции, которая будет вызываться при выборе одной из кнопок, по следующему образцу:

hR11_P2=@R11_P2; % Получение указателя на функцию (R11_P2)

% Установка указателя для вызываемой функции:

set(hGroup4,'SelectionChangeFcn',hR11_P2);

% Начальное состояние (ни одна из кнопок не выбрана):

set(hGroup4,'SelectedObject',[]);% Начальное состояние группы

Для правильной работы «радиокнопок» необходимо, чтобы вызываемая функция располагалась в том же файле, что и головная программа, а вызов функции осуществлялся через указатель на нее. Кроме того, головная программа также должна быть оформлена как функция (см. п. 2).

  1. Создайте в поле 6 ползунок и определите для него вызываемую функцию аналогично тому, как было показано в п. 4:

hSlider6=uicontrol('Style','Slider','Position',[x6 y6 w6 h6]);

hR11_P3=@R11_P3; % Получение указателя на функцию (R11_P3)

set(hSlider6,'Callback',hR11_P3); % Установка указателя

set(hSlider6,'Min',0,'Max',20); % Граничные значения

  1. Создайте поле редактирования 7 и разместите перед ним надпись «P=» (см. лаб. раб. 5).

  2. Прочтите входной файл, используя команду load.

  3. Установите пределы по осям абсцисс и ординат для поля 1:

axes(hAxes1) % Активизация поля 1

RRmax=max(RR)*1.2; % Предел по оси X (RR – входной массив)

set(hAxes1,'XLim',[0 450],'YLim',[0 RRmax]); % Пределы по X и Y

hold on % Режим сохранения установок

  1. Постройте в поле 1 график ритмограммы (см. лаб. раб. 10).

Расчет и вывод графика равномерно дискретизованного сигнала:

  1. Рассчитайте координаты узлов интерполяции по оси абсцисс (координатами по оси ординат являются сами значения кардиоинтервалов):

t=0; % Переменная текущего времени

for i=1:NRR % Здесь NRR – число интервалов

t=t+RR(i); % Расчет текущего времени (для i-го узла)

tRR(i)=t; % Координата i-го узла по оси абсцисс

end

  1. Рассчитайте параметры сплайн-функций:

sRR=csaps(tRR,RR,1); % Сплайны для координат tRR и RR

  1. Выполните дискретизацию сплайн-функций с частотой 4 Гц:

Fd=4, T=1/Fd; % Частота и интервал дискретизации

tsRR=0:T:tRR(NRR); % Переменная времени

RR4Hz=ppval(sRR,tsRR ); % Дискретизация

  1. Выведите в поле 2 график полученной функции, соблюдая масштаб по оси абсцисс и установив по оси ординат те же пределы, что и для поля 1.

Расчет оценок спектра и частотных показателей ВСР:

  1. В том же M-файле ниже текста головной функции разместите текст функции, которая будет вызываться при нажатии какой-либо из «радиокнопок». В скобках после имени функции должны быть указаны два аргумента. В одном из них (h) будет автоматически передаваться указатель на данную группу кнопок, а второй будет содержать структуру данных (Sel), которая позволит программе определить, какая из кнопок была нажата:

function R11_P2(h,Sel) % Заголовок функции и ее параметры

Данная функция при нажатии верхней кнопки будет вычислять спектр с помощью периодограммного метода (по всему фрагменту сигнала), а при нажатии нижней – метода Уэлча (по перекрывающимся сегментам).

  1. Выполните подготовительные действия, общие для обоих методов:

nfft=2048; % Число точек для алгоритма БПФ

% Устранение линейного тренда и перевод значений сигнала в мс:

RR0=detrend(RR4Hz)*1000;

df=Fd/nfft; % Шаг по частоте

Fmax=0.5; % Максимальная частота для графика

Nf=fix(Fmax/df); % Число отсчетов по оси частот

  1. В зависимости от того, какая из кнопок нажата, рассчитайте спектр и постройте в поле 3 график спектральной плотности мощности (СПМ):

if Sel.NewValue==rb1 % Нажата верхняя кнопка ?

window=hamming(length(RR4Hz)); % Окно Хемминга

[Pxx,f] = periodogram(RR0,window,nfft,Fd); % Спектр

plot(f(1:Nf),Pxx(1:Nf)) % График СПМ

else % Нажата нижняя кнопка

Nw=500; % Размер сегмента для метода Уэлча

noverlap=100; % Перекрытие сегментов

window=hamming(Nw); % Окно Хемминга для метода Уэлча

[Pxx,f]=pwelch(RR0,window,noverlap,nfft,Fd); % СПМ

plot(f(1:Nf),Pxx(1:Nf)) % График СПМ

end

  1. Установите предел по оси ординат, равный 1,3 от максимума спектра:

Ymax=max(Pxx(1:Nf))*1.3; % Предел по оси ординат

set(hAxes3,'YLim',[0 Ymax]); % Установка предела

  1. Рассчитайте показатели VLF, LF и HF:

flim=[0.003 0.04 0.15 0.4]; % Пределы диапазонов частот

VLF=0, LF=0, HF=0; % Начальные значения

i=0, f=0; % Переменные цикла и частоты

while f<=flim(4) % Перебор частот до 0,4 Гц

f=df*i; % Текущая частота

i=i+1; % Индекс массива СПМ

if f>=flim(1) && f<flim(2) % Диапазон VLF ?

VLF=VLF+Pxx(i)*df; % Расчет VLF

elseif f>=flim(2) && f<flim(3) % Диапазон LF ?

LF=LF+Pxx(i)*df; % Расчет LF

elseif f>=flim(3) % Диапазон HF ?

HF=HF+Pxx(i)*df; % Расчет HF

end

end

  1. Округлите вычисленные значения до целых величин и выведите их друг под другом в правом верхнем углу поля 3, например:

VLF=round(VLF); % Округление VLF

dy=Ymax/10; % Шаг по ординате

text(0.3,Ymax-dy,['VLF=' num2str(VLF) ' ms^2']); % Вывод VLF

  1. По аналогии с п. 15 создайте функцию для ползунка:

function R11_P3(h,Sel) % Заголовок функции и ее параметры

  1. Прочтите параметр текущего положения ползунка, округлите его до целого значения и выведите в поле редактирования 7:

P=round(get(hSlider6,'Value')); %Ввод порядка модели от ползунка

if P==0

P=1; % Порядок АР модели не может быть равен 0

end

set(hEdit7,'String',num2str(P)); % Индикация значения 'P'

  1. Рассчитайте и выведите в поле 5 спектр для полученного с помощью ползунка порядка АР-модели P, а также показатели VLF, LF и HF.

Расчет спектра с помощью АР модели почти аналогичен описанному в п. 16. Отличия заключаются в следующем:

  • не используется оконная функция;

  • расчет СПМ выполняется с помощью метода Берга:

[Pxx,f]=pburg(RR0,P,nfft,Fd); % АР спектр для порядка Р

  1. Не забудьте во всех подготовленных программах объявить как global переменные, являющиеся общими для этих программ (см. лаб. раб. 5).

  2. При помощи «радиокнопок» получите спектры для периодограммного метода и метода Уэлча (при значениях размера сегмента 200, 500 и 1000). Сохраните копии окна программы для всех вариантов.

  3. При помощи ползунка установите значения порядка АР модель равными 5, 10 и 20. Сохраните копии окна программы для всех вариантов.