Скачиваний:
13
Добавлен:
01.12.2022
Размер:
341.57 Кб
Скачать

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

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

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

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

  1. Кафедра биотехнических систем и технологий

отчет

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

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

Тема: Спектральный анализ ЭКГ

Вариант 4

Студентки гр. 0502

Лиоско Е.П.

Потько А.А.

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

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

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

2022

        1. Цель работы:

Исследование разложения по методу БПФ, изучение спектров сигналов ЭКГ в норме и при различных патологиях.

        1. Задачи работы:

  • Рассчитать и исследовать спектральные оценки тестового сигнала. Построить графики сигнала, а также амплитудного спектра и СПМ.

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

        1. Часть 1. Расчет спектральных оценок для тестового сигнала

Текст программы №1:

clc;

clear all;

close all;

X0=0; % Координата “x” (на экране) нижнего левого угла окна

Y0=0; % Координата “y” (на экране) нижнего левого угла окна

W0=1800; % Ширина окна

H0=800; % Высота окна

figure('Position',[X0,Y0,W0,H0]) % Создание окна

x1=50; % Координата "x" (в окне) нижнего левого угла 1-го поля

dx=50; % Расстояние по “x” между 1-м и 2-м полями

y1=100; % Координата "y" (в окне) нижнего левого угла 1-го поля

w=335; % Ширина 1-го и 2-го полей вывода графиков

h=167; % Высота 1-го и 2-го полей вывода графиков

hAxes=zeros(3,3);

for i=[1 2 3]

% Создание 1-го поля:

hAxes(i,1)=axes('Units','pixels','Position',[x1,y1+(i-1)*(50+h),w+w,h]);

% Создание 2-го поля:

hAxes(i,2)=axes('Units','pixels','Position',[x1+dx+w+w,y1+(i-1)*(50+h),w,h]);

% Создание 3-го поля:

hAxes(i,3)=axes('Units','pixels','Position',[x1+dx+dx+w+w+w,y1+(i-1)*(50+h),w,h]);

end

axes(hAxes(3,1))

tmax=2.5;

Fs=180;

T=1/Fs;

t=0:T:tmax-T;

s=0.15+0.8*sin(2*pi*10*t)+1.5*sin(2*pi*16*t);

plot(t,s)

title('Сумма двух синусоид и константы')

grid on % Нанесение координатной сетки на график

ft=fft(s); %Расчет БПФ для сигнала

N=tmax*Fs; % Число отсчетов в тестовом сигнале

for j=1:N % Цикл перебора всех элементов разложения

if (j==1) % Случай нулевой частоты:

as(j)=sqrt(real(ft(j))^2+imag(ft(j))^2)/N;

else % Для всех частот, кроме нулевой:

as(j)=sqrt(real(ft(j))^2+imag(ft(j))^2)/N*2;

end

end

axes(hAxes(3,2))

df=Fs/N; % Шаг по оси частот

for j=1:(N/2)

f(j)=df*(j-1); % Расчет аргумента для построения графика

end

stem(f,as(1:N/2),'.') % График амплитудного спектра

title('График амплитудного спектра 1')

axes(hAxes(3,3))

for j=1:N % Цикл для перебора всех элементов разложения

if (j==1) % Случай нулевой частоты:

psd(j)=1/N*(real(ft(j))^2+imag(ft(j))^2)/Fs;

else % Для всех частот, кроме нулевой:

psd(j)=2/N*(real(ft(j))^2+imag(ft(j))^2)/Fs;

end

end

plot (f,psd(1:(N/2)))% График СПМ

title('График СПМ 1')

m=mean(s);

s0=s-m;

axes(hAxes(2,1))

plot(t,s0)

title('Сигнал без среднего значения')

grid on % Нанесение координатной сетки на график

ft=fft(s0); %Расчет БПФ для сигнала

N=tmax*Fs; % Число отсчетов в тестовом сигнале

for j=1:N % Цикл перебора всех элементов разложения

if (j==1) % Случай нулевой частоты:

as(j)=sqrt(real(ft(j))^2+imag(ft(j))^2)/N;

else % Для всех частот, кроме нулевой:

as(j)=sqrt(real(ft(j))^2+imag(ft(j))^2)/N*2;

end

end

axes(hAxes(2,2))

df=Fs/N; % Шаг по оси частот

for j=1:(N/2)

f(j)=df*(j-1); % Расчет аргумента для построения графика

end

stem(f,as(1:N/2),'.') % График амплитудного спектра

title('График амплитудного спектра 2')

axes(hAxes(2,3))

for j=1:N % Цикл для перебора всех элементов разложения

if (j==1) % Случай нулевой частоты:

psd(j)=1/N*(real(ft(j))^2+imag(ft(j))^2)/Fs;

else % Для всех частот, кроме нулевой:

psd(j)=2/N*(real(ft(j))^2+imag(ft(j))^2)/Fs;

end

end

plot (f,psd(1:(N/2)))% График СПМ

title('График СПМ 2')

w=hamming(N);

for j=1:N

sw(j)=s0(j)*w(j);

end

axes(hAxes(1,1))

plot(t,sw)

hold on

plot(t,w)

title('График оконной функции и сигнала, умноженного на нее')

grid on % Нанесение координатной сетки на график

ft=fft(sw); %Расчет БПФ для сигнала

N=tmax*Fs; % Число отсчетов в тестовом сигнале

for j=1:N % Цикл перебора всех элементов разложения

if (j==1) % Случай нулевой частоты:

as(j)=sqrt(real(ft(j))^2+imag(ft(j))^2)/N;

else % Для всех частот, кроме нулевой:

as(j)=sqrt(real(ft(j))^2+imag(ft(j))^2)/N*2;

end

end

axes(hAxes(1,2))

df=Fs/N; % Шаг по оси частот

for j=1:(N/2)

f(j)=df*(j-1); % Расчет аргумента для построения графика

end

stem(f,as(1:N/2),'.') % График амплитудного спектра

title('График амплитудного спектра 3')

axes(hAxes(1,3))

for j=1:N % Цикл для перебора всех элементов разложения

if (j==1) % Случай нулевой частоты:

psd(j)=1/N*(real(ft(j))^2+imag(ft(j))^2)/Fs;

else % Для всех частот, кроме нулевой:

psd(j)=2/N*(real(ft(j))^2+imag(ft(j))^2)/Fs;

end

end

plot (f,psd(1:(N/2)))% График СПМ

title('График СПМ 3')

Рисунок №1 – Спектральные оценки тестового сигнала

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