Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РПЗ МОБС Зайцев.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
347.1 Кб
Скачать
  1. Разработка прикладного по выделения кардиоимпульса (листинг программы).

var

pf: array [0..100] of Real;

fph: array [0..3,0..4100] of Real;

plez: TextFile;

lett, st: string;

tme, pp, sx2,sxy,prd: Real;

i, itec, j, j2, nd, k, okr, znd, itr: Integer;

wtf: Boolean;

label 1;

begin

1: i:=0; nd:=0;

k:=0; repeat fph[3,k]:=0; k:=k+1; until k=4100; k:=0;

wtf:=True; AssignFile(plez,'1.txt');

reset(plez);

tme:=StrToFloat(edt1.Text);

pp:=StrToFloat(edt2.Text);

okr:=StrToint(edt3.Text);

mmo1.Lines.Clear;

repeat

Readln(plez,lett);

fph[0,i]:=Round(i*tme*1000)/1000;

fph[1,i]:=(-1)*StrToFloat(lett);

if i>pp+1 then

begin

sx2:=0;sxy:=0;

itr:=trunc(pp/2);

j:=-itr;

repeat

sx2:=sx2+j*j;

sxy:=sxy+j*fph[1,i-itr+j];

j:=j+1;

until j>itr;

fph[2,i-itr]:=sxy/sx2*20;

if fph[2,i-itr]<0 then fph[2,i-itr]:=-sxy/sx2*20;

end

else fph[2,i-itr]:=0;

if fph[2,i-itr-1]>=fph[2,i-itr] then

if fph[2,i-itr-1]>=fph[2,i-itr-2]then

fph[3,i-itr-1]:=fph[2,i-itr-1];

j:=i-okr;

itec:=i-trunc(okr/2);

repeat

if fph[3,j]>fph[3,itec] then fph[3,itec]:=0;

if fph[3,j]=fph[3,itec] then

if itec<>j then fph[3,j]:=0;

j:=j+1;

until j>i-1;

if fph[3,itec]>0 then

begin

if wtf=False then

begin

pf[k]:=1/prd;

if k>0 then if k/3=Trunc(k/3) then

st:=FloatToStrF(pf[k],ffFixed,4,3)+'| '+FloatToStrF((pf[k-2]+pf[k-1]+ +pf[k])/3,ffFixed,4,3)+'| _____'

else st:=FloatToStrF(pf[k],ffFixed,4,3)+'| _____| _____';

if k=0 then st:=FloatToStrF(pf[k],ffFixed,4,3)+'| _____| _____';

mmo1.Lines.Add(st);

k:=k+1;

prd:=0;

end

else

begin

mmo1.Lines.Add('1 пер. | 3 пер.');

prd:=0;

wtf:=False;

end;

end;

i:=i+1;

prd:=prd+tme;

nd:=nd+1;

until Eof(plez);

CloseFile(Plez);

end;

  1. Тестирование программного обеспечения на сигнале фпг.

Испытаем разработанный алгоритм на фотоплетизмограмме. Для удобства визуального контроля используем процедуру построения графиков из массивов fph[1,0..nd], fph[2,0..nd], fph[3,0..nd], соответствующим фотоплетизмограмме (черный цвет), её производной (зеленый цвет), импульсам вершин зубьев производной(красный цвет). Причём nd соответствует количеству произведенных измерений. Временные данные берутся из массива fph[0,i..nd].

При запуске программы видно две кнопки (Рис. 4.) - «Начало» и «График», а также три изменяемых строки: «Период дискретизации» , «Окрестность для выборки вершин производной» и «Количество точек для квадратичной аппроксимации». В строках можно менять данные в пределах возможностей переменных, то есть в первой строке можно вводить любые числа, в остальных двух только целые, везде только положительные.

Рисунок 4. Запуск программы.

При нажатии кнопки «Начало» запускается выше разработанный алгоритм, а также выводятся на экран посчитанные частоты под надписью «частота кровенаполнения» (Рис. 5.).

Рисунок 5. Нажатие кнопки «Начало».

Кнопка «График» служит командой к построению графических зависимостей вышеупомянутых величин(Рис. 6.). Также появляются полосы прокрутки, которыми можно просмотреть на всем протяжении времени, и на всем амплитудном диапазоне.

Рисунок 6. Нажатие кнопки «График».

Параметр «Период дискретизации» влияет только на частоту кровенаполнения и метки координат на графике. Параметр «Количество точек для квадратичной аппроксимации» меняет вид производной, и соответственно влияет на работу блока по отысканию вершин зубцов производной. На рисунке 7 наглядно видно, как располагаются вершины зубцов, вычисленные при разных количествах точек для аппроксимации(сверху вниз): 3 точки, 11 точек, 19 точек. На самом нижнем графике появился лишний импульс, что сильно меняет частоту, выдаваемую программой.

Рисунок 7. Демонстрация производных при разных количествах точек аппроксимации.

Также влияет на появление погрешностей в подсчете частоты выбор окрестности. Можно визуально наблюдать разницу при изменение параметра «Окрестность для выборки вершин производной». Для примера возьмём две величины этого параметра (Рис. 8.): 150 точек и 250 точек(сверху вниз).

Рисунок 8. Демонстрация выборки зубцов при разных окрестностях.

Делая вывод, можно сказать, что для хорошей и точной работы программы необходимо подстраивать её под пациента и частоту дискретизации фотоплетизмографа, для этого лучше предварительно снять фотоплетизмограмму и на ней сделать необходимые поправки на значения переменных.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]