Скачиваний:
45
Добавлен:
08.04.2022
Размер:
138.69 Кб
Скачать

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

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

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

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

Кафедра БТС

отчет

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

по дисциплине «Методы обработки и анализа

биомедицинских сигналов и данных»

Вариант № 1

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

Басалай К.А.

Фалевская А.А.

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

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

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

2019

Лабораторная работа 2. ЦИФРОВАЯ ФИЛЬТРАЦИЯ ЭКГ

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

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

Цифровой фильтр – это математический алгоритм обработки дискретных сигналов, который описывается разностным уравнением:

В таблице указаны два набора коэффициентов, определяющих фильтры двух различных типов. Значения коэффициентов первого набора симметричны относительно центрального коэффициента, а второго – антисимметричны.

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

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

• Для двух заданных фильтров (“1” и “2”) рассчитать и построить графики их основных характеристик (набор коэффициентов, АЧХ, импульсная и амплитудная характеристики).

• Прочесть из файла фрагмент ЭКГ, выполнить его фильтрацию обоими фильтрами и построить графики сигнала до и после фильтрации.

Отчет по выполненной работе

Задание 1: Расчет характеристик фильтров.

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

Т аблица 1

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

clc

clear all

% фильтр 1

B1=[1/8 1/4 1/4 1/4 1/8]; % вектор коэф. фильтра

M1=length(B1); % число коэф.

subplot(4,2,1) % активизация 1-го поля (3х1)

stem(B1) % график коэф-тов в виде вертикальных линий

title('Фильтр 1')

Fs=250; % частота дискретизации (Гц)

T=1/Fs; % интервал дискретизации (с)

f=0:Fs/2; % диапазон изменения частоты для АЧХ

H1=abs(1/4+1/2*cos(2*pi*f*T)+1/4*cos(4*pi*f*T)); % расчет АЧХ

subplot(4,2,3)

plot(f,H1)

title('АЧХ')

N=20; % число значений входной последовательности

for n=1:N % цикл, в котором создается входной массив

X(n)=0 % из N нулевых значений

end

X(10)=1; % присвоение 10-му элементу значения «1»

Y=zeros(1,N); % создание и заполнение нулями выходного массива

for n=M1:N % фильтрация входного массива

Y(n)=1/8*X(n)+1/4*X(n-1)+1/4*X(n-2)+1/4*X(n-3)+1/8*X(n-4);

end

subplot(4,2,5)

stem(X,'.') % график входной последовательности

hold on

stem(Y,'r') % график выходной последовательности

title('Импульсная х-ка')

for n=1:N/2 % цикл, в котором создается входной массив

X(n)=0; % из N/2 нулевых значений и N/2 значений «1»

end

for n=N/2:N

X(n)=1

end

Y=zeros(1,N);

for n=M1:N

Y(n)=1/8*X(n)+1/4*X(n-1)+1/4*X(n-2)+1/4*X(n-3)+1/8*X(n-4);

end

subplot(4,2,7)

stem(X,'.')

hold on

stem(Y,'r')

title('Переходная х-ка')

% фильтр 2

B2=[1/3 1/6 0 -1/6 -1/3];

M2=length(B2);

subplot(4,2,2)

stem(B2)

title('Фильтр 2')

Fs=250;

T=1/Fs;

f=0:Fs/2;

H2=abs(1/3*sin(2*pi*f*T)+2/3*sin(4*pi*f*T));

subplot(4,2,4)

plot(f,H2)

title('АЧХ')

N=20;

for n=1:N

X(n)=0

end

X(10)=1;

Y=zeros(1,N);

for n=M2:N

Y(n)=1/3*X(n)+1/6*X(n-1)-1/6*X(n-3)-1/3*X(n-4);

end

subplot(4,2,6)

stem(X,'.')

hold on

stem(Y,'r')

title('Импульсная х-ка')

for n=1:N/2

X(n)=0

end

for n=N/2:N

X(n)=1

end

Y=zeros(1,N);

for n=M2:N

Y(n)=1/3*X(n)+1/6*X(n-1)-1/6*X(n-3)-1/3*X(n-4);

end

subplot(4,2,8)

stem(X,'.')

hold on

stem(Y,'r')

title('Переходная х-ка')

Изображение графического окна:

Задание 2: Фильтрация фрагмента реальной записи ЭКГ.

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

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

clc

clear all

close all

% исходный сигнал

X=load('R2_01.txt');

LX=length(X); % определение числа прочитанных отсчетов

Fs=1200; % частота дискретизации для ЭКГ

T=1/Fs;

tmax=LX*T;

t=0:T:tmax-T; % диапазон изменения аргумента

subplot(3,1,1)

plot(t,X)

xlim([0,tmax])% масштаб по оси X

% фильтр 1

B1=[1/8 1/4 1/4 1/4 1/8];

M1=length(B1);

Y=zeros(1,LX);

for n=M1:LX

Y(n)=1/8*X(n)+1/4*X(n-1)+1/4*X(n-2)+1/4*X(n-3)+1/8*X(n-4);

end

subplot(3,1,2)

plot(t,Y)

xlim([0,tmax])

% фильтр 2

B2=[1/3 1/6 0 -1/6 -1/3];

M2=length(B2);

Y=zeros(1,LX);

for n=M2:LX

Y(n)=1/3*X(n)+1/6*X(n-1)-1/6*X(n-3)-1/3*X(n-4);

end

subplot(3,1,3)

plot(t,Y)

xlim([0,tmax])

И зображение графического окна:

Выводы:

Зная коэффициенты фильтра, мы можем определить его АЧХ, импульсную, переходную характеристики. Также с помощью МАТLAB мы можем смоделировать фильтрацию сигнала ЭКГ посредством выбранного фильтра.

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