Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МОиАБМСиД_Калиниченко_020919.pdf
Скачиваний:
210
Добавлен:
25.12.2019
Размер:
823.83 Кб
Скачать

LF=LF+Pxx(i)*df;

% Расчет

LF

elseif f>=flim(3)

%

Диапазон HF ?

HF=HF+Pxx(i)*df;

%

Расчет

HF

end

 

 

 

end

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

VLF=round(VLF);

%

Округление VLF

dy=Ymax/10;

%

Шаг по ординате

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

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

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

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

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

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

end

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

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

Расчет спектра с помощью АР модели почти аналогичен описанному

вп. 16. Отличия заключаются в следующем:

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

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

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

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

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

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

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

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

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

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

64

Вопросы для самоконтроля

1)Что является входными данными для расчёта параметров вариабельности сердечного ритма (ВСР)?

2)Как рассчитывается функция, график которой выводится во втором сверху окне?

3)Какая связь между ритмограммой и равномерно дискретизованным сигналом?

4)Почему конечные значения сигнала по оси абсцисс оказываются разными для ритмограммы и для равномерно дискретизованного сигнала?

5)В чем заключается принцип сплайн-интерполяции?

6)Какая частота отсчётов используется для расчета спектров?

7)В каких единицах измерения выражены значения спектральной плотности мощности?

8)В чём различие между способом расчёта спектра с использованием периодограммного метода и метода Уэлча (проиллюстрируйте на примерах графиков спектра)?

9)Как влияет величина порядка авторегрессионной модели на вид получаемого спектра (проиллюстрируйте на примерах графиков спектра)?

10)Как по графикам спектра можно приблизительно оценить значения параметров VLF, LFи HF, вычисляемых в программе? Сравните приблизительные оценки, полученные по графикам, с рассчитанными программой значениями.

65

Лабораторная работа 12. ИССЛЕДОВАНИЕ РИТМОВ ЭЭГ

Цель работы: ознакомление с методами анализа ритмов электроэнцефалограммы (ЭЭГ), основанными на полосовой фильтрации.

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

При анализе записей электроэнцефалограммы (ЭЭГ) выделяют четыре основных типа ритмов:

δ (дельта) с частотой 0,5…3 Гц и амплитудой 40…300 мкВ; θ (тета) с частотой 4…6 Гц и амплитудой 40…300 мкВ; α (альфа) с частотой 8…13 Гц и амплитудой до 100 мкВ; β (бета) с частотой 14…40 Гц и амплитудой до 15 мкВ.

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

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

Построить графики многоканальной электроэнцефалограммы.

Рассчитать полосовые фильтры для выделения ритмов ЭЭГ δ, θ, α и β

ивыполнить фильтрацию ЭЭГ.

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

Построение графиков многоканальной записи реальной ЭЭГ.

В файлах, имена которых указаны в табл. П.12 приложения, содержатся фрагменты реальных записей сигнала ЭЭГ. Каждая колонка в файлах соответствует отдельному каналу. Для каждого варианта имеется по два файла: ЭЭГ – при открытых (open) и закрытых (close) глазах. Частота дискретизации ЭЭГ Fs = 250 Гц, длительность фрагментов составляет по 5 с.

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

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

66

 

 

 

 

 

 

 

 

 

 

3. Создайте рабочее окно программы

 

1

 

 

 

 

 

 

 

 

по образцу, приведенному на

рисунке,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

и разместите на нем кнопку команды вы-

 

 

 

 

 

 

 

 

 

 

бора файла (поле 1), четыре поля для вы-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

3

 

5

 

 

вода графиков (поля 2, 3, 5 и 6) и список

 

 

 

 

 

 

 

выбора полосового фильтра ЭЭГ (поле 4,

 

 

 

 

 

 

 

 

 

 

см. ниже).

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

4. Укажите в качестве

значения

 

 

 

 

 

 

 

 

 

 

свойства ‘Callback’ для кнопки выбора

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

входного файла имя другой программы,

 

 

 

 

 

 

 

 

 

 

которая будет вызываться при нажатии кнопки (см. лаб. раб. 5).

 

 

Список выбора фильтра создается аналогично раскрывающемуся меню

(см. лаб. раб. 10), но с указанием другого стиля объекта ('listbox'):

 

hList=uicontrol('Style','listbox', 'Position',[xl,yl,wl,hl],);

5.Укажите в качестве значения свойства ‘Callback’ для спи ска выбора ритма имя другой программы, которая будет вызываться при выборе строки в списке (см. лаб. раб. 10).

6.Определите надписи для пяти строк списка и установите неактивное начальное состояние списка, например:

set(hList, 'String', ...

% Установка свойств списка

{'No filter','delta','teta','alfa','beta'},...

% Фильтры

'Enable','off',);

% Неактивное начальное состояние

Здесь создаются строки списка для пяти следующих случаев: отсутствие выбора фильтра, а также выбор фильтров для ритмов δ, θ, α и β.

7.Создайте новый М-файл и сохраните его под именем, совпадающим с указанным в качестве свойства ‘Callback’ кнопки выбора файла.

8.В качестве первого оператора в файле должно стоять объявление функции. Название функции должно совпадать с именем M-файла, например:

function R12_P2() % Имя M-файла должно быть «R12_P2.m»

9. В начале программы поместите команды для вызова стандартного диалогового окна выбора файла и получения данных из файла:

fname=uigetfile('*txt','Выберите файл');

% Выбор файла

if fname~=0

% Проверка на ошибку

EEG=load(fname);

% Чтение ЭЭГ из файла

else

%

Ошибка при выборе файла

errordlg ('Ошибка!');

%

Сообщение об ошибке

67

return

% Выход из программы

end

10. Выведите в поле 2 графики всех каналов ЭЭГ, соблюдая масштаб по времени и обеспечивая равномерное разнесение кривых по ординате (см. лаб. раб. 7), например:

axes(hAxes2);

% Активизация поля 2

cla

i=1:M

% Очистка от предыдущего графика

for

% Перебор

всех каналов ЭЭГ

 

plot(t,EEG(:,i)-i*dy);

% Графики

с разнесением по оси Y

 

hold on

 

 

end

title(fname) % Вывод имени файла в качестве заголовка графика

Здесь «hAxes2» – указатель поля 2, «M» – число каналов ЭЭГ (определяется при помощи функции «length»), «t» – переменная времени, а «dy» – дистанция по оси Y для графиков ЭЭГ (подбирается опытным путем).

11. Установите активное состояние списка выбора фильтра:

set(hList,'Enable','on');

12. Очистите поля 3, 5 и 6 при помощи команды «cla», например:

cla(hAxes3) % Очистка поля 3

Расчет фильтров для выделения ритмов ЭЭГ фильтрация ЭЭГ:

13.Создайте новый М-файл и сохраните его под именем, совпадающим

суказанным в качестве свойства ‘Callback’ списка выбора фильтра.

14.В качестве первого оператора должно стоять объявление функции. Название функции должно совпадать с именем M-файла, например:

function R12_P3() % Имя M-файла должно быть «R12_P3.m»

15. Определите номер выбранной строки списка:

r=get(hList,'Value')-1; % Опрос списка выбора фильтра

При выборе верхней строки эта команда возвратит значение «0», при выборе второй строки – «1» и так далее.

16. В случае выбора верхней строки списка (отсутствие фильтрации) должны обновляться графики ЭЭГ в поле 2 , очищаться поля 3, 5, 6 и выполняться выход из программы:

if r==0

 

% Если выбрана верхняя строка

axes(hAxes2)

% Активизация поля 2

hold off

% Обновление графиков ЭЭГ

for

i=1:M

 

plot(t,EEG(:,i)-i*dy);

68

hold on

end

cla(hAxes3) % Очистка полей 3, 5 и 6 cla(hAxes5)

cla(hAxes6)

return % Выход из программы

end

17. Рассчитайте фильтр, соответствующий выбранной строке списка:

Fs=250; % Частота дискретизации ЭЭГ

Fc=[1 4;4 8;8 13;14 30]; % Граничные частоты ритмов δ, θ, α, β

Ord=fix(4*Fs/(Fc(r,1)+3));

% Выбор порядка фильтра

df1=Fc(r,1)/5;

% Первая (левая) частота среза АЧХ

Fstop1 = Fc(r,1)-0.7*df1; % Конец первой полосы задержки

Fpass1 = Fc(r,1)+0.3*df1;

% Начало полосы пропускания

df2=Fc(r,2)/5;

% Вторая (правая) частота среза АЧХ

Fpass2 = Fc(r,2)-0.3*df2;

% Конец полосы пропускания

Fstop2 = Fc(r,2)+0.7*df2; % Начало второй полосы задержки

Wstop1 = 1;

% Коэффициент АЧХ фильтра

Wpass = 1;

% Коэффициент АЧХ фильтра

Wstop2 = 1;

% Коэффициент АЧХ фильтра

b=firls(Ord, [0 Fstop1 Fpass1 Fpass2 Fstop2 Fs/2]/(Fs/2),...

[0 0 1 1 0 0], [Wstop1 Wpass Wstop2]); % Расчет фильтра

В переменной «b» будут получены коэффициенты нерекурсивного полосового фильтра, реализующего выделение выбранного ритма ЭЭГ.

18. Постройте в поле 5 амплитудно-частотную характеристику фильтра (АЧХ) в диапазоне частот от 0 до 50 Гц с шагом по частоте 0,2 Гц:

df=0.2;

% Шаг по частоте

расчета АЧХ

Nf=fix((Fs/2)/df);

% Число отсчетов для

[h,w]=freqz(b,1,Nf);

% Расчет АЧХ

 

 

Fmax=50;

% Максимальная частота АЧХ

Nmax=fix(Fmax/df);

% Число отсчетов для

вывода АЧХ

axes(hAxes5)

% Активизация поля 5

 

plot(w(1:Nmax)/(2*pi)*Fs, abs(h(1:Nmax)))

% Построение АЧХ

19. Постройте в поле 6 импульсную характеристику фильтра:

axes(hAxes6)

%

Активизация поля 5

stem(b,'.')

%

Построение импульсной характеристики

20. Выполните фильтрацию ЭЭГ:

EEG_F=filter(b,1,EEG);

21. Выполните компенсацию вносимой фильтром задержки:

69