Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаба 5 / Адаптивный фильтр ( лаба 5 )

.docx
Скачиваний:
105
Добавлен:
25.12.2019
Размер:
294.19 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра биотехнических систем

отчет

по лабораторной работе №5

по дисциплине «Методы обработки и анализа биомедицинских сигналов и данных»

Тема: АДАПТИВНЫЙ ФИЛЬТР СЕТЕВОЙ НАВОДКИ

Вариант 6

Студенты гр. 7501

Попадьина А.О.

Исаков А.О.

Преподаватель

Калиниченко А. Н.

Санкт-Петербург

2019

Цель работы: исследование адаптивного цифрового фильтра сетевой наводки 50 Гц.

Основные теоретические положения

Сетевая наводка с частотой 50 Гц, является одной из наиболее распространенных помех, характерных для биомедицинских сигналов. В настоящей работе предлагается исследовать адаптивный цифровой режекторный фильтр, предназначенный для устранения этой помехи.

Принцип действия данного фильтра основан на использовании известного тригонометрического соотношения:

.

Если интерпретировать величину θ как текущее время, а величину δ – как интервал между отсчетами дискретного сигнала, то можно преобразовать приведенное выше выражение к виду:

,

где ai­1, ai и ai+1 – последовательные отсчеты синусоидального сигнала, а C = 2 cos δ – константа. Другими словами, эта формула позволяет предсказать очередное значение синусоиды (ai+1) по двум предыдущим (ai–1 и ai).

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

Практическая часть

Исходные данные:

Вариант

Fd, Гц

A

tmax, c

Имя файла

7

360

12

0,9

R5_07.txt

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

1) Адаптивная фильтрация fs50

Код программы:

function [y] =fs50(x,Fs,da)

a=0;

a1=0;

ax=0;

C=2*cos(2*pi/(Fs/50));

N=length(x);

x1=x(1);

for i=1:N

dy=(x(i)-a)-(x1-a1);

if dy~=0

if dy>0

a=a+da;

else

a=a-da;

end

end

y(i)=x(i)-a;

ax=a;

a=a*C-a1;

a1=ax;

x1=x(i);

end

end

2) Главная программа

Код программы:

%тестовый сигнал

clc;

clear all;

close all;

Fs=360;

A=12;

tmax=0.9;

F=50;

T=1/Fs;

t=0:T:tmax-T;

global hAxes1 hAxes2 hAxes3 hEda

x=load('R5_07.txt');

x0=300;

y0=20;

w0=900;

h0=700;

x1=50;

y1=500;

w1=600;

h1=150;

dy=50;

w2=20;

h2=17;

w3=100;

figure('Color',[1 1 1],'Position',[x0,y0,w0,h0]);

hAxes1=axes('Units','pixels','Position',[x1,y1,w1,h1]);

hTxta=uicontrol('Style','text','String','Исходный сигнал','Position',[x1,y1+h1,w3,h2],'BackgroundColor',[1 1 1]);

hAxes2=axes('Units','pixels','Position',[x1,y1-dy-h1,w1,h1]);

hTxta=uicontrol('Style','text','String','Отфильтрованный сигнал','Position',[x1,y1-dy,w3,h2],'BackgroundColor',[1 1 1]);

hAxes3=axes('Units','pixels','Position',[x1,y1-2*dy-2*h1,w1,h1]);

hTxta=uicontrol('Style','text','String','Компенсирующий сигнал','Position',[x1,y1-2*dy-h1,w3,h2],'BackgroundColor',[1 1 1]);

hTxta=uicontrol('Style','text','String','da=','Position',[x1+w1+dy,y1-h1,w2,h2],'BackgroundColor',[1 1 1]);

hEda=uicontrol('Style','edit','Position',[x1+w1+dy+w2,y1-h1,2*w2,h2],'BackgroundColor',[1 1 1],'HorizontalAlignment','left');

hBtn=uicontrol('Style','pushbutton','String','Filter','Position',[x1+w1+dy+w2,y1-h1-dy,2*w2,h2],'Callback','filter');

3) Фильтр

Код программы:

%тестовый

global hAxes1 hAxes2 hAxes3 hEda

%исходный

x=A*sin(2*pi*F*t);

axes(hAxes1);

plot(t,x);

grid minor;

str=get(hEda,'String');

da=str2num(str);

y=fs50(x,Fs,da);

%отфильтрованный

axes(hAxes2);

TT=0.9/(length(x));

time=0:TT:tmax-TT;

plot(time,y);

grid minor;

%компенсирующий

for i=1:length(x)

a(i)=x(i)-y(i);

end

axes(hAxes3);

TT=0.9/(length(x));

time=0:TT:tmax-TT;

plot(time,a);

grid minor;

Подобранные значения шага адаптации, при котором полное подавление помехи достигается за время, соответствующее:

  • 25% от длины фрагмента сигнала – da=0.2, t=0,225c – Рис. 1.

Рис. 1. Работа программы при da=0.2

  • 50% от длины фрагмента сигнала – da=0.097, t=0,45c – Рис. 2.

Рис. 2. Работа программы при da=0.097

  • 75% от длины фрагмента сигнала – da=0.064, t=0,675c – Рис. 3.

Рис. 3. Работа программы при da=0.064

Задание 2: фильтрация фрагмента ЭКГ, содержащего сетевую наводку, подбор значения шага адаптации

1) Копия программы «Адаптивная фильтрация fs50» (см. Задание 1) для сигнала ЭКГ

Код программы:

%ЭКГ

clc;

clear all;

close all;

Fs=250;

global hAxes1 hAxes2 hAxes3 hEda

x=load('R5_07.txt');

x0=300;

y0=20;

w0=900;

h0=700;

x1=50;

y1=500;

w1=600;

h1=150;

dy=50;

w2=20;

h2=17;

w3=100;

figure('Color',[1 1 1],'Position',[x0,y0,w0,h0]);

hAxes1=axes('Units','pixels','Position',[x1,y1,w1,h1]);

hTxta=uicontrol('Style','text','String','Исходный сигнал','Position',[x1,y1+h1,w3,h2],'BackgroundColor',[1 1 1]);

hAxes2=axes('Units','pixels','Position',[x1,y1-dy-h1,w1,h1]);

hTxta=uicontrol('Style','text','String','Отфильтрованный сигнал','Position',[x1,y1-dy,w3,h2],'BackgroundColor',[1 1 1]);

hAxes3=axes('Units','pixels','Position',[x1,y1-2*dy-2*h1,w1,h1]);

hTxta=uicontrol('Style','text','String','Компенсирующий сигнал','Position',[x1,y1-2*dy-h1,w3,h2],'BackgroundColor',[1 1 1]);

hTxta=uicontrol('Style','text','String','da=','Position',[x1+w1+dy,y1-h1,w2,h2],'BackgroundColor',[1 1 1]);

hEda=uicontrol('Style','edit','Position',[x1+w1+dy+w2,y1-h1,2*w2,h2],'BackgroundColor',[1 1 1],'HorizontalAlignment','left');

hBtn=uicontrol('Style','pushbutton','String','Filter','Position',[x1+w1+dy+w2,y1-h1-dy,2*w2,h2],'Callback','filter_ekg');

2) Модернизированный вариант программы «Главная программа» (см. Задание 1) для сигнала ЭКГ

Код программы:

%ЭКГ

global hAxes1 hAxes2 hAxes3 hEda

T=1/Fs;

t=0:T:1-T;

%исходный

axes(hAxes1);

plot(t,x);

grid minor;

ylim([-120 120]);

str=get(hEda,'String');

da=str2num(str);

y=fs50(x,Fs,da);

%отфильтрованный

axes(hAxes2);

plot(t,y);

grid minor;

ylim([-120 120]);

%компенсирующий

for i=1:length(x)

a(i)=x(i)-y(i);

end

axes(hAxes3);

plot(t,a);

grid minor;

ylim([-120 120]);

Полученные в результате работы программ графики: Рис. 4:

Рис. 4. Полученные графики

Шаг адаптации da, при котором достигается полное подавление помехи, равен 2

Выводы:

  1. Адаптивными называются фильтры, принцип действия которого основан на использовании известного тригонометрического соотношения:

.

Алгоритм адаптивной фильтрации, постоянно анализируя сигнал, постепенно настраивается на имеющуюся в нем синусоидальную составляющую и вычитает ее из сигнала.

  1. АЧХ режекторного фильтра:

На большей части частотного диапазона коэффициент передачи фильтра примерно равен единице. При частотах, близких к 50 Гц, фильтр имеет резкий провал АЧХ (полосу задержки) шириной около 1 Гц. Такой вид АЧХ соответствует режекторному фильтру с частотой режекции 50 Гц.

  1. Шаг адаптации – время адаптации фильтра к фильтрации сигнала.

  2. Добротность режекторного фильтра

  3. АЧХ гребенчатого фильтра, в отличие от режекторного, имеет вид:

  1. При больших значениях Δa фильтр настраивается очень быстро, но заметно искажает полезный сигнал. С уменьшением Δa искажения сигнала становятся меньше, но растет время настройки. Эмпирически выведенное выражение V = 150 Δa характеризует зависимость от величины Δa скорости адаптации фильтра V, которая определяется как среднее изменение амплитуды помехи в процессе адаптации, измеренное в числе единиц диапазона АЦП, приходящихся на единицу времени.

  2. а

  3. Выражение, связывающее между собой сигналы y(i)=x(i)-a

  4. Отсчеты выходного сигнала y(i)=x(i)-a

  5. Чтобы данный адаптивный режекторный фильтр работал в США, нужно изменить частоту режекции на 60 Гц, получаем формулу C=2*cos(2*pi/(Fs/60));

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