Скачиваний:
20
Добавлен:
08.04.2022
Размер:
3.07 Кб
Скачать
%Объявление функции
function Listbox()
global Haxes_2 Haxes_3 Haxes_5 Haxes_6 Hbtn Hlist t c EEG dy fname
r = get(Hlist,'Value')-1;
if r==0
axes(Haxes_2)
hold off
for i=1:c
plot(t, EEG(:,i)-i*dy);
xlim([0,5]);
title(fname)
xlabel('t,c')
ylabel('U, мкВ')
hold on
end
cla(Haxes_3);
cla(Haxes_5);
cla(Haxes_6);
return
else
%Рассчет фильтра
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]); % Расчет фильтра
%Построение в поле 5 амплитудно-частотную характеристику фильтра
df=0.2; % Шаг по частоте
Nf=fix((Fs/2)/df); % Число отсчетов для расчета АЧХ
[h,w]=freqz(b,1,Nf); % Расчет АЧХ
Fmax=50; % Максимальная частота АЧХ
Nmax=fix(Fmax/df); % Число отсчетов для вывода АЧХ
axes(Haxes_5) % Активизация поля 5
plot(w(1:Nmax)/(2*pi)*Fs, abs(h(1:Nmax)))% Построение АЧХ
title('АЧХ фильтра')
xlabel('f,Гц')
ylabel('|H(f)|')
%Постройте в поле 6 импульсную характеристику фильтра
axes(Haxes_6) % Активизация поля 6
stem(b,'.') % Построение импульсной характеристики
title('Импульсная характеристика')
xlabel('n')
ylabel('x(n)')
%Выполните фильтрацию ЭЭГ
EEG_F=filter(b,1,EEG);
%Выполните компенсацию вносимой фильтром задержки:
N=length(EEG_F(:,1)); % Число отсчётов ЭЭГ
D=fix(Ord/2); % Определение числа тактов задержки
EEG_F(1:N-D,:)=EEG_F(D+1:N,:); % Начальный участок
for i=1:c
EEG_F(N-D+1:N,i)=EEG_F(N,i); % Компенсация задержки
end
%Очистите поле 2, заново выведите исходные ЭЭГ и на том же графике
cla(Haxes_2);
axes(Haxes_2)
for i=1:c
%plot(t, EEG(:,i)-i*dy,t,EEG_F(:,i)-i*dy,'Color','r');
plot(t, EEG(:,i)-i*dy,'Color','b');
hold on
plot(t,EEG_F(:,i)-i*dy,'Color','r');
xlim([0,5]);
title(fname)
xlabel('t,c')
ylabel('U, мкВ')
end

Var(1,:)=var(EEG); % Дисперсия исходной ЭЭГ
Var(2,:)=var(EEG_F); % Дисперсия фильтрованной ЭЭГ
axes(Haxes_3); % Активизация поля 3
barh(Var','group'); % Построение столбиковой диаграммы
title('Оценка дисперсии ЭЭГ до и после фильтрации')
set(Haxes_3,'YDir','Reverse') % Изменение порядка по вертикали

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