Аппаратно-программные средства обработки и интерпретации кардиограмм

Разработка алгоритмов фильтрации и интерпретации электрокардиограмм с использованием сплайн-аппроксимации и интерпретации сигналов на основе вейвлет-анализа. Анализ аппаратно-программного обеспечения регистрации и обработки электрокардиограмм.

Рубрика Программирование, компьютеры и кибернетика
Вид диссертация
Язык русский
Дата добавления 23.05.2018
Размер файла 788,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Общая характеристика входной и выходной информации

Основной входной информацией для нашей программы является зашумлённая ЭКГ. Наряду с полезным сигналом в ЭКГ присутствуют помехи разного уровня.

Выходной информацией для данной программы являются фильтрованные ЭКГ, в которых помехи исключены.

Структура программного пакета

Основной программный пакет состоит из двух частей:

nfilter.fig - оболочка;

nfilter.m - исходной код, который создан на языке Matlab 7.

Для получения nfilter.exe файла на Matlab существует компилятор MATLAB Compiler. MATLAB Compiler компилируют *.m файлы на *.с (файлы программированные на языке С) и автоматически создает *.exe. Чтобы выполнить такую операцию в командной строке Matlab даётся команда:

mcc -m -B sgl nfilter.m

После выполнения этой команды структура программного пакета будет представлена в следующем виде:

nfilter.exe - оболочка, запускаемая пользователем при загрузке ПО, выполняет следующие функции:

сохранение информации о сеансе работы (конфигурации);

поддержка работы с внутренними базами данных;

определение значений измеренных ЭКГ-параметров;

печать данных и результатов;

работа со справочной информацией;

информация об авторах.

nfilter.c - исходные коды программы на языке программирования С;

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

4.2. Программная реализация алгоритма интерпретации ЭКГ в среде Matlab

Рассмотрим кардиосигнал (второе грудное отведение V2), записанный на кардиографе высокого разрешения с частотой дискретизации 1024 отсчета в секунду. Для вейвлет - разложения применим вейвлет Дебеши db4, имеющий носитель на промежутке [0,7].

1) Загружаем кардиосигнал s0020_rem.mat. Его длина составляет более 70000 отсчетов. Выбираем фрагмент этого сигнала длиной 4096. Проведем разложение сигнала до уровня N=3 и построим графики сигнала и вейвлет коэффициентов (рис. 4.2.1 и 4.2.3).

clc; clear all; close all;

subplot(3,1,1)

w='db4';

Fr=centfrq(w);

[c,l]=wavedec(k1,3,w);

[cd1,cd2,cd3]=detcoef(c,l,[1,2,3]);

[c1,l1]=wavedec(k2,3,w);

[cd21,cd22,cd23]=detcoef(c1,l1,[1,2,3]);

figure(1);

subplot 211; plot(k1);title('1- Bemor ECG V2');

subplot 212; plot(k2);title('2- Bemor ECG V2');

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

Статистические характеристики. Рассмотрим статистические характеристики как вейвлет - коэффициентов, так и элементов сигнала, соответствующих этим коэффициентам. Очевидно (и это подтверждается вычислениями), что среднее значение равно нулю. Для сравнения найдем среднее квадратичное отклонение (команда std) полученных выше вейвлет - коэффициентов cD1, cD2, cD3 и дисперсия сигнала D1, D2, D3 пациентов «1- бемор» и «2- бемор».

scd1=std(cd1); scd2=std(cd2); scd3=std(cd3);

scd21=std(cd21); scd22=std(cd22); scd23=std(cd23);

scd1s=std(Scd1); scd2s=std(Scd2); scd3s=std(Scd3);

scd21s=std(Scd21); scd22s=std(Scd22); scd23s=std(Scd23);

Результаты вычислений приведены в таблице 4.2.1.

Таблица 4.2.1.

Пациенты

Вейвлет - коэффициенты

Дисперсия сигнала

cD1

cD2

cD3

D1

D2

D3

1-бемор

4.4528

11.3565

56.7059

3.1459

5.6638

19.9309

2-бемор

7.5700

16.5377

49.4496

5.3482

8.2589

17.3833

Разница

0.5882

0.6867

1.1467

0.5882

0.6858

1.1466

На основе таблице 4.2.1 можно сделать следующий вывод, что стандартные отклонения вейвлет-коэффициентов и дисперсии сигнала двух различных пациентов различаются почти в 1.1 раза. Это означает, вычисленные параметры имеют диагностическую значимость.

Существует ещё несколько параметров, такие как энергия, мощность и др. Использование этих параметров улучшает точность постановки диагноза.

4.3 Порядок функционирования программы

Термины и определения

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

Экран

Экран - совокупность данных, полностью занимающих экран компьютера. Данные относятся к одной теме или к одному виду действий.

Окно

Окно - прямоугольная область экрана, содержащая функционально связанные данные, относящиеся к одной теме или одному виду действий.

Поле ввода

Поле ввода - место на экране или в окне, предназначенное для ввода или корректировки данных. Каждое поле ввода имеет имя, показывающее, к какому параметру относится значение в поле ввода. Само поле ввода обычно ограничено квадратными скобками [ ]. Поля ввода бывают следующих видов:

поля, обязательные для ввода;

поля, необязательные для ввода;

связанные поля ввода;

поля ввода с прокруткой;

поля ввода со связанным списком.

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

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

Для присвоения параметру значения, введенному в поле ввода, ввод должен закончиться одной из клавиш завершения ввода - это или клавиша Enter, или клавиша v, или комбинация клавиш Ctrl-Enter. Если ввод данных в поле ввода не заканчивался клавишей завершения, то присвоение введенных данных соответствующему параметру не произойдет, и после перехода на другое поле ввода клавишами отказа - Esc, ^ либо Ctrl-Esc значение параметра примет прежнее, до его изменения, значение.

Список

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

Действие

Клавиша

На следующую запись

v

На предыдущую запись

^

На первую запись окна

Ноmе

На последнюю запись окна

End

Следующая страница списка

PgDn

Предыдущая страница списка

PgUp

На первую строку списка

Ctrl-PgUp

На последнюю строку списка

Ctrl-PgDn

Страницей списка называется совокупность записей, помещающихся в окне просмотра. Текущей строкой или записью называется строка, выделенная в списке маркером.

Меню

Меню представляет собой фиксированный список каких-либо значений или действий. Служит для выбора пользователем дальнейших действий или для внесения данных, имеющих ограниченное число вариантов (например, меню используется масштабирование ЭКГ сигналы, где появляются на мониторы). Перемещение по пунктам меню осуществляется клавишами:

Действие

Клавиша

на следующий пункт

v или >

на предыдущий пункт

^ или <

на первый пункт меню

Ноmе

на последний пункт меню

End

Выбрать пункт меню (выбрать действие, определяемое этим пунктом) - выделить этот пункт меню маркером и нажать клавишу Enter. Выход из меню без выбора - Esc.

Функциональные клавиши

Функциональные клавиши - клавиши F1...F12, а также комбинации их или алфавитно-цифровых клавиш с модифицирующими клавишами Shift, Ctrl и Alt. Нажатие функциональных клавиш приводит к выполнению специфичных, связанных с данной клавишей (комбинацией клавиш), функций.

База данных

База данных (БД) - совокупность данных одного вида. Например, создается внутренняя база данных с помощью математических алгоритмов. База данных содержит цифры, означающие амплитуды и частоты.

Назначение клавиш

Действие

Клавиша

курсор влево

<

курсор вправо

>

в конец поля ввода

End

в начало поля ввода

Home

отказ от действия; переход к предыдущему полю ввода; прекращение выполнения текущего действия

Esc

Завершение ввода в поле ввода; переход к следующему полю ввода; активизация действия (в меню)

Enter

переключение блока цифровой клавиатуры

Num Lock

переключение блока цифровой клавиатуры

Caps Lock

активизация режима добавления; переключение между режимами ВСТАВКА-ЗАМЕНА

Ins

Активизация режима удаления; удаление символа в позиции курсора

Del

удаление символа перед курсором

Backspace

удаление символов от позиции курсора

Ctrl-End

удаление символов во всей строке

Ctrl-Home

Режим ВСТАВКА - вводимые символы вставляются в позиции курсора. Текст справа от курсора сдвигается.

Режим ЗАМЕНА - вводимые символы вставляются в позиции курсора. Имеющиеся символы затираются.

Если названия клавиш написаны через тире, то их необходимо нажимать одновременно. Например, сочетание Ctrl-Enter означает, что необходимо нажать клавишу Ctrl, и, не отпуская ее, однократно нажать клавишу Enter (но не наоборот).

При выполнении любых действии по изменению данных следует помнить, что для сохранения результата действие необходимо закончить одной клавиш завершения Enter, v, Ctrl-Enter. Для отказа от сделанных изменений необходимо завершить действие клавишами отказа - Esc, ^ или Ctrl-Esc. Еще одно существенное отличие клавиш Esc и Enter от Ctrl-Esc и Ctrl-Enter заключается в том, что при выполнении некоторых действий, которые могут привести к необратимым последствиям (например, потере введенных данных), при нажатии комбинации клавиш Ctrl-Esc или Ctrl-Enter программа выполняет заданные действия без запросов. При выполнении действий через клавиши Esc или Enter программа запрашивает подтверждение на выполнение действия.

4.4 Инструкция для пользователей программы

Сначала загружается основной файл nfilter.exe, где расположена оболочка в памяти компьютера. Оболочка состоит из несколько частей:

При работе с программой можно пользоваться следующими кнопками клавиатуры:

<, v - копки понижения параметров;

>, ^ - копки повышения параметров;

F10 - переход на строку меню;

Enter - подтверждения выбранных параметров;

Tab - переход с одной управляющей кнопки на другую.

4.4 Выводы

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

2. Даны основные характеристики сигналов ЭКГ, области применения разработанного программного пакета, характеристика входной и выходной информации, описание структуры программного пакета.

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

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

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

ЗАКЛЮЧЕНИЕ

В ходе выполнения диссертационной работы были достигнуты следующие результаты.

1. Исследованы существующие в настоящее время аппаратно-программные средства регистрации и обработки ЭКГ. На основании обширного фактического материала делается вывод об основных преимуществах компьютерной регистрации сигналов ЭКГ по сравнению с аналоговой с точки зрения фильтрации шумов различного происхождения.

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

3. Разработанный алгоритм решения вопроса фильтрации сигналов ЭКГ, осуществляемый на основе сплайн аппроксимации данных ЭКГ внутри каждого RR-интервала, имеет очевидные алгоритмические преимущества: высокую скорость реализации, простые численные алгоритмы, требуемую точность обработки.

4. Предлагаемый собственный подход интерпретации ЭКГ основанный на вейвлет-анализа увеличивает точность диагноза сердечных заболеваний (аритмии).

5. Разработанный программный пакет и инструкции пользователя имеют большую практическую значимость при расшифровке сигналов ЭКГ с целью постановки диагноза, так как обеспечивает работу в реальном масштабе времени, устраняет наиболее характерные виды шумов, может быть реализован на обычном персональном компьютере и может быть применен для обучения магистров специальности 5А521909 - «Аппаратно-программное обеспечение биотехнических систем».

ЛИТЕРАТУРА

Distributed Component Object Model Protocol. - Microsoft, version 1.0, January 1998.

E.B. Аксенов и др., Системы сбора и обработки электрофизиологической информации на основе сигма-дельта аналого-цифрового преобразования

//Биомедицинские технологии и радиоэлектроника. - №12-2001. - стр. 56-65.

Водолазский Л. А. Основы техники клинической электрографии.- Москва: Медицина.-1966.-270 с.

Шакин В. В. Вычислительная электрокардиография.- М.: Наука.-1981.-166 с.

Дроздов Д. В. Персональный компьютер в качестве электрокардиографа // М: Компьютерные технологии в медицине.-1996.-№1.-С. 18-23.

Селищев В.А Автоматизированное проектирование биомедицинских электронных систем // Биомедицинские технологии и радиоэлектроника..- М.: №12,2001. - с. 5-17.

Роджерсон Д. Основы СОМ. - М: Русская редакция ТОО " Channel Trading Ltd.". -1997

Чаппел Д. Технологии ActiveX и COM. - Microsoft Press- 1997.

Хабибуллин И.Ш. Создание распределенных приложений на Java 2 // М.- 2002 г. 704 стр.

Блейхут Р. Быстрые алгоритмы цифровой обработки сигналов. - M.: Мир 1989.

Голд Б., Рэйдер Ч. Цифровая обработка сигналов: Пер. с англ./ Под ред. А. M. Трахтмана. -M.: Советское радио, 1973.

Латфуллин И. А., Тептин Г. М. Возможности электрокардиографии высокого разрешения. - Казанский медицинский журнал, 1998, 79, 2.

Рабинер Л., Гоулд Б. Теория и применение цифровой обработки сигналов: Пер с англ./ Под ред. Ю. И. Александрова. - M.: Мир, 1978.

Степура О. Б., Остроумова О. Д., Курильченко И. Т., Мартынов А. И. Клиническая значимость сигналусреднённой электрокардиографии. - Российские Медицинские Вести N1, 1997.

М. С. Куприянов, Б. Д. Матюшкин. Цифровая Обработка Сигналов - СПБ: Политехника, 2000, С. 304-325.

В. В. Мурашко, А. В. Струтынский. Электрокардиография - Москва: Медицина, 1991

А. З. Чернов, М. И. Кечкер. Электрокардиографический атлас - Москва: Медицина, 1979

В. Н. Орлов. Руководство по электрокардиографии - Москва: Медицина, 1984.

Р. М. Баевский, Г. Г. Иванов, Вариабельность сердечного ритма: теоретические аспекты и возможности клинического применения - Москва, 2000, Гл. 3.2.

Г. Г. Иванов. Электрокардиография высокого разрешения - Москва, 1999.

К. Грегори. Использование Visual C++ 6.0. Вильямс, Москва, 2000.

Аввад Насер, С.В. Солошенко, С.А.Филист. Спектральное разложение электрокардиосигналов на нестационарных отрезках собственных частот // Конференция Биомедприбор, 2000.

А.П.Иванов, И.А.Эльгардт, Н.С.Сдобнякова, В.А.Леонтьев. Некоторые особенности спектрального анализа сердечного ритма в оценке вегетативного баланса у больных инфарктом миокарда. // Конференция Биомедприбор, 2000.

Т.В.Истомина, Л.Ю.Кривоногов. Перспективы применения ранговых методов для обнаружения границ информативных участков электрокардиосигнала. // Конференция Биомедприбор, 2000.

С.А. Гаспарян, Т.В. Зарубина, С.Л. Швырев. Развитие интегральной автоматизированной системы постоянного интенсивного наблюдения за состоянием пациентов реанимационных отделений. // Конференция Биомедприбор, 2000.

Шитов А. Б., Разработка численных методов и программ, связанных с применением вейвлет-анализа для моделирования и обработки экспериментальных данных, Иваново -- 2001.

И.М. Соболь. Многомерные квадратурные формулы и функции Хаар. - М.: «Наука», 1969.

Мусаев М.М. Развитие спектральных методов в обработке сигналов и изображений. Вестник ТУИТ, №1, 2007 г. - 14-18 с.

Завьялов Ю. С. и др. Методы сплайн- функций. М.: Наука, 1980. 352с

Хемминг Р. Цифровые фильтры. М.: Сов. радио, 1980. 220с.

Curtin M. Sigma-Delta techniques reduce hardware count and power consumption in biomedical analog front end // Analog Dialogue Journal.1994.V. 28.№2.P. 6-8.

Medical Instrumentation. Application and Design. // editor Webster J.G.- Boston, Houghton Mifflin-1992.-790p.

Neuman M. R. Biopotential Electrodes, in The Biomedical Engineering Handbook, Editor-in-Chief J. D.Bronzino. // CRC and IEEE Press.- Boca Raton, Florida.-1995.-P. 745-757.

Вычислительные системы и автоматическая диагностика заболеваний сердца. Под. ред. Ц. Карераса и Л. Дрейфуса.- М.: Мир.-1974.-504с.

Куриков С. Ф., Прилуцкий Д. А., Селищев С. В. Технология ? - ? преобразования в многоканальных электрокардиографах. // Тезисы докладов Международной конференции по биомедицинскому приборостроению “Биомедприбор-96”.- Москва, ВНИИМП РАМН.-8-10 октября 1996.-С. 26-27.

Шакин В. В. Вычислительная электрокардиография.- М.: Наука.-1981.-166с.

Hideki I. et al. An efficient encoding method for electrocardiography using spline functions/ // System and Computers in Japan. -1985. -V.16. -N 3. -P. 85-94.

Pitas I., Venetsanooulos A.N. Nonlinear order statistic filters for img filtering and edge detection. // North Holland. Signal Processing. -1986. -N 10. -P. 395-413.

Харатьян Е.И. Математическая обработка сигналов в системе мониторирования электрокардиограмм. // Автореферат диссертации на соискание уч. ст. к.т.н. - Москва, 1997. - 24с.

Wartak J., Milliken J. A., Karchmar J. Computer program for pattern recognition of electrocardiograms // Comput. Biomed. Res. -1970. -V. 3. -N 4. - P. 344-374.

Гуревич М.Б., Злочевский М.С. Выбор представительного кардиоцикла при контурном анализе ЭКГ на микроЭВМ. // Применение мат. методов обработки медико-биологических данных и ЭВМ в мед. технике. - М.: ВНИИМП, 1984. - С.75-77

Wortzman D. et al. A hybryel system for measurement and interpretation of electrocardiograms. // Ann. N.Y. Acad. Sci., 1968. - V. 128. - P. 875.

Фу К. Структурные методы в распознавании образов. - М.: Мир, -1977, С.25-115.

Валужис А.К., Рашимас А.П. Статистический алгоритм структурного анализа ЭКС. // Кибернетика, 1979, N 3, С.91-95.

Лебедев В.В., Калантар В.А., Аракчеев А.Г., Корадо И.В. Испытательный сигнал для проверки измерительных алгоритмов электрокардиографических автоматизированных систем. // Мед. Техника. - 1997. - N 3. - C. 40 - 41.

http://shitov.ru/sci/pdf/thesis/text/thesis.pdf

http://www.ekg.ru

http://www.biosignal.ru

http://www.google.ru

http://ya.ru

ПРИЛОЖЕНИЕ

1. Список и обозначение аббревиатур

ЭК - Электрокардиограф

ЭКС - Электрокардиосигнал

ЭКГ - Электрокардиограмма

МЭК - Международная Электротехническая Комиссия

АЦП - Аналого-цифровой преобразователь

ЦАП - Цифро-аналоговый преобразователь

ПО - Программное обеспечение

АЧХ - Амплитудно-частотная характеристика

ФНЧ - Фильтр нижних частот

ФВЧ - Фильтр верхних частот

ЦОС - Цифровая обработка сигналов

ПСС - Псевдослучайный сигнал

ППЗУ - Программируемое постоянно-запоминающее устройство

ЦИК - Циклический избыточный код

МЗР - Младший значащий разряд

2. Исходный код программы

function sgolaydemo(action);

if nargin==0,

action = 'initialize';

end

x1 = ecg(500).';

x = [x1;x1;x1;x1;x1;x1];

y = sgolayfilt(x,0,15); %Бесшумный сигнал

K = fft(y);

m = abs(K); p = unwrap(angle(K));

C = (0:length(K)-1)*99/length(K);

switch action,

case 'initialize',

hfig = figure('NumberTitle','off',...

'Name','EKG - Laziz Nosirov');

bgc = get(0,'DefaultUIControlBackgroundColor');

% Структура(рамка) для всего средства управления

framepos = [.07.02.65.35];

uicontrol(...

'Style','frame',...

'Units','normalized',...

'BackgroundColor',bgc,...

'Position',framepos);

% Структура(рамка) для секции параметров

framepos2 = [.10.04.30.29];

uicontrol(...

'Style','frame',...

'Units','normalized',...

'ForegroundColor','black',...

'Position',framepos2);

% Параметры

titlepos = [.11.32.19.03];

titlelabel = 'Параметры фильтра';

uicontrol(...

'String',titlelabel,...

'HorizontalAlignment','left',...

'Style','text',...

'Units','normalized',...

'BackgroundColor',bgc,...

'ForegroundColor','black',...

'Position',titlepos);

%купхад полином

menuname1 = 'Степень полинома';

tposition1 = [.11.11.2.05];

uicontrol(...

'String',menuname1,...

'HorizontalAlignment','left',...

'Style','text',...

'Units','normalized',...

'ForegroundColor','black',...

'Position',tposition1);

mposition1 = [.29.11.1.05];

popstr1 = {'1','2','3','4'};

degreehndl = uicontrol('String',popstr1,...

'Style','Popup',...

'Tag','degreepopup',...

'Units','normalized',...

'Backgroundcolor','white',...

'Position',mposition1,...

'UserData',str2double(popstr1),...

'CallBack','sgolaydemo(''recal'')');

% SG создают меню размера

menuname2 = 'Размер структуры';

tposition2 = [.11.06.2.05];

uicontrol(...

'String',menuname2,...

'Style','text',...

'HorizontalAlignment','left',...

'Units','normalized',...

'ForegroundColor','black',...

'Position',tposition2);

mposition2 = [.29.07.1.05];

popstr2 = {'5','15','25','55'};

framehndl = uicontrol('String',popstr2,...

'Style','Popup',...

'Tag','framepopup',...

'Backgroundcolor','white',...

'Units','normalized',...

'Position',mposition2,...

'UserData',str2double(popstr2),...

'CallBack','sgolaydemo(''recal'')');

% Шумовая разница slider

sliname1 = 'Шумовой уровень';

tposition4 = [.14.25.21.05];

uicontrol(...

'String',sliname1,...

'Style','text',...

'Units','normalized',...

'BackgroundColor',bgc,...

'ForegroundColor','black',...

'Position',tposition4);

mposition4 = [.14.20.21.05];

sliderhndl = uicontrol('Style','slider',...

'Tag','noiseslider',...

'Units','normalized',...

'Value',0.7,...

'Min',0,'Max',1.4,...

'Position',mposition4,...

'CallBack','sgolaydemo(''recal'')');

% Информация и закрывающий кнопки

tposition7 = [.50.24.19.1];

uicontrol(...

'String','Инфо',...

'Units','normalized',...

'Position',tposition7,...

'Callback','nfilter(''info'')');

tposition8 = [.50.04.19.1];

uicontrol(...

'String','Выход',...

'Units','normalized',...

'ForegroundColor','black',...

'Position',tposition8,...

'Callback','sgolaydemo(''done'')');

% кнопки АВТОРЫ

tposition7 = [.50.14.19.1];

uicontrol(...

'String','Авторы',...

'Units','normalized',...

'Position',tposition7,...

'Callback','nfilter(''avtor'')');

% Set up the MiniCommand Window

top=0.90;

left=0.80;

right=0.96;

bottom=0.05;

labelHt=0.05;

spacing=0.005;

promptStr=num2str(y);

% First, the MiniCommand Window frame

frmBorder=0.02;

frmPos=[left-frmBorder bottom-frmBorder...

(right-left)+2*frmBorder (top-bottom)+2*frmBorder];

uicontrol(...

'Style','frame',...

'Units','normalized',...

'Position',frmPos,...

'BackgroundColor',[0.50 0.50 0.50]);

% Then the text label

labelPos=[left top-labelHt (right-left) labelHt];

uicontrol(...

'Style','text',...

'Units','normalized',...

'Position',labelPos,...

'BackgroundColor',[0.50 0.50 0.50],...

'ForegroundColor',[1 1 1],...

'String','Циф. сигнал после фильт.');

% Then the editable text field

mcwPos=[left bottom (right-left) top-bottom-labelHt-spacing];

mcwHndl=uicontrol(...

'Style','edit',...

'HorizontalAlignment','left',...

'Units','normalized',...

'Max',10,...

'BackgroundColor',[1 1 1],...

'Position',mcwPos,...

'Callback','graf2d(''eval'')',...

'String',promptStr);

% Save this handle for future use

set(gcf,'UserData',mcwHndl);

% Начальные ---------------------------------

noise = 0.7;

degree = 0;

frame = 5;

title('Бесшумный ЭКГ')

ha1 = subplot('Position',[.07.79.65.15]); plot(y)

set(gca,'XTick',[])

axis([0 3000 -.6.8])

title('Зашумлённая ЭКГ - Shovqinli EKG')

ha3 = subplot('Position',[.07.59.65.15]); plot(C,m)

set(gca,'XTick',[]);

% axis([0 3000 -.6.8])

title('АЧХ')

ha2 = subplot('Position',[.07.38.65.15]); plot(y)

set(gca,'XTick',[])

axis([0 3000 -.6.8])

title('Фильтрованным EKG - Filtrlangan EKG')

ud.handles.ax = [ha1 ha2 ha3];

ud.handles.uis = [degreehndl framehndl sliderhndl];

set(hfig,'UserData',ud);

update_gui(y,noise,degree,frame)

case 'recal',

hfig = gcf;

ud = get(hfig,'UserData');

hn = ud.handles.uis(3);

hd = ud.handles.uis(1);

hf = ud.handles.uis(2);

noise = get(hn,'Value');

degindx = get(hd,'Value');

deg = get(hd,'UserData');

degree = deg(degindx);

frmindx = get(hf,'Value');

frm = get(hf,'UserData');

frame = frm(frmindx);

update_gui(y,noise,degree,frame)

case 'info',

ttlStr = ' ';

hlpStr1=...

['Этот пример показывает интерпритации и обработка электрокардиограмм,' sprintf('\n')...

'который алгоритм построен на основе БПФ.' sprintf('\n')...

''];

helpwin(hlpStr1, ttlStr);

case 'avtor',

ttlStr = 'Автор данного работ:';

hlpStr1=...

['Магистрант Носиров Л., ТУИТ, ФИТ, кафедра "Компьютерные системы", группа 909-08' sprintf('\n')...

'' sprintf('\n')...

'' sprintf('\n')...

''];

helpwin(hlpStr1, ttlStr);

case 'done',

close(gcf);

end

function [s,f] = update_signal(y,noise,degree,frame)

%UPDATE_SIGNAL Повторно вычисляет шумный ECG и фильтрованные ECG сигналы.

v = 0.05*noise*randn(3000,1); % Шум

s = y + v; % Шумный ЭКГ

f = sgolayfilt(s,degree,frame);

function update_gui(y,noise,degree,frame)

%UPDATE_GUI Эта функция называется, чтобы модернизировать GUI с новыми ценностями.

hfig = gcf;

[s,f] = update_signal(y,noise,degree,frame);

ud = get(hfig,'UserData');

axhdlnp = ud.handles.ax(1);

axhdlfp = ud.handles.ax(2);

hdn = get(axhdlnp,'Children');

hdf = get(axhdlfp,'Children');

set(hdn,'YData',s);

set(hdf,'YData',f);

function x = ecg(L)

a0 = [0,1,40,1,0,-34,118,-99,0,2,21,2,0,0,0]; % Шаблон

d0 = [0,27,59,91,131,141,163,185,195,275,307,339,357,390,440];

a = a0 / max(a0);

d = round(d0 * L / d0(15)); % Масштаб их, чтобы соответствовать в длине L

d(15)=L;

for i=1:14,

m = d(i): d(i+1) - 1;

slope = (a(i+1) - a(i)) / (d(i+1) - d(i));

x(m+1) = a(i) + slope * (m - d(i));

end

Размещено на Allbest.ru

...

Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.