МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра БТС
отчет
по лабораторной работе №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 мы можем смоделировать фильтрацию сигнала ЭКГ посредством выбранного фильтра.