Комплекс методических указаний "Прикладной анализ биомедицинских сигналов"
Комплекс методических указаний содержит общие сведения о биомедицинских сигналах и современных методах их компьютерной обработки. Основное внимание уделено практическим вопросам анализа биомедицинских сигналов в среде компьютерных вычислений MATLAB.
Подробно рассмотрены методики линейной фильтрации биосигналов во временной и частотной области, вейвлет-фильтрации, согласованной и адаптивной фильтрации, методы обнаружения характерных эпох и событий в биомедицинских сигналах, а также методы математического анализа параметров сердечного ритма.
Комплекс методических указаний предназначен для бакалавров, выполняющих практические и лабораторные работы по курсу “Основы обработки биомедицинских сигналов”, и обучающихся по направлению 12.03.04 «Биотехнические системы и технологии». Разработано на кафедре лазерных и биотехнических систем.
Министерство науки И ВЫСШЕГО ОБРАЗОВАНИЯ
Российской Федерации
федеральное государственное автономное образовательное учреждение высшего образования
«САМАРСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ
УНИВЕРСИТЕТ имени академика С.П. КОРОЛЕВА
А.А. Федотов
Прикладной анализ биомедицинских сигналов
Комплекс методических указаний к лабораторным
и практическим работам
САМАРА 2018
УДК 57.087
Составитель: А.А. Федотов
Прикладной анализ биомедицинских сигналов: Метод. указания / Самар. нац. исследов. ун-т.; сост. А.А. Федотов; Самара, 2018, 132 с.
Комплекс методических указаний содержит общие сведения о биомедицинских сигналах и современных методах их компьютерной обработки. Основное внимание уделено практическим вопросам анализа биомедицинских сигналов в среде компьютерных вычислений MATLAB.
Подробно рассмотрены методики линейной фильтрации биосигналов во временной и частотной области, вейвлет-фильтрации, согласованной и адаптивной фильтрации, методы обнаружения характерных эпох и событий в биомедицинских сигналах, а также методы математического анализа параметров сердечного ритма.
Комплекс методических указаний предназначен для бакалавров, выполняющих практические и лабораторные работы по курсу “Основы обработки биомедицинских сигналов”, и обучающихся по направлению 12.03.04 «Биотехнические системы и технологии». Разработано на кафедре лазерных и биотехнических систем.
Рецензент: к.т.н., доцент И.А. Кудрявцев
ПРЕДИСЛОВИЕ
Появление в последние годы в клинической практике многочисленной аппаратуры мониторного контроля физиологических показателей человека открывает большие возможности в совершенствовании методик медицинской диагностики. Особенностью современных медицинских систем диагностики является применение “интеллектуальных” технических средств, позволяющих врачу получать результаты оценки физиологических показателей пациента в автоматизированном режиме с использованием возможностей вычислительной техники.
Значительное повышение технического уровня развития современных клинических систем за счёт совершенствования аппаратной реализации, технологий производства и развития прикладного программного обеспечения делает компьютерные системы диагностики незаменимыми в повседневной практике. При этом все более существенную роль в настоящее время начинают играть компьютерные методы обработки биомедицинской информации, в частности, методы цифровой фильтрации биомедицинских сигналов, математического анализа многомерных массивов физиологических показателей.
Комплекс методических указаний содержит информацию об основных методах компьютерной обработки биосигналов, приведён подробный анализ существующих методик линейной фильтрации биосигналов во временной и частотной областях, адаптивной и согласованной фильтрации, методов математического анализа сердечного ритма, а также включает в себя индивидуальные практические задания по решению задач обработки различных биомедицинских сигналов в пакете вычислений MATLAB и контрольные вопросы для самопроверки.
Материалы данного методического комплекса предназначены для практического введения в теорию компьютерной обработки биомедицинских сигналов, и закладывают основы для дальнейшего изучения этой многогранной и стремительно развивающейся области современной биомедицинской инженерии.
Практическое занятие № 1. Основы клинической диагностики
Повышение эффективности современных медицинских технологий тесно связано с совершенствованием методов и инструментальных средств диагностики и объективного контроля состояния пациента в процессе лечения. Построение инструментальных средств диагностики состояния основано на регистрации и измерении физиологических показателей, характеризующих работу важнейших физиологических систем организма.
Первыми техническими средствами, используемыми для этой цели, стали ртутный термометр для определения температуры тела и звукоусилительная трубка для прослушивания шумов сердца и дыхания.
Развитие техники и, в особенности, электроники привело к созданию высокочувствительных методов регистрации биологических сигналов и эффективных средств их обработки и получения диагностических данных.
Биомедицинские сигналы представляют собой разнообразные по характеру проявления (электрические, механические, химические и др.) деятельности физиологических систем организма. Знание параметров и характеристик биологических сигналов дополняет клиническую картину заболевания объективной диагностической информацией, позволяющей прогнозировать развитие состояния пациента.
Методы исследования физиологических процессов, используемые в диагностических приборах, должны обеспечивать непрерывность регистрации биологических сигналов в реальном масштабе времени при высокой диагностической ценности получаемых показателей. Этим требованиям удовлетворяют ряд методов физиологических исследований, широко используемых в функциональной диагностике.
Электрокардиография – метод исследования электрической активности сердца, осуществляемый с помощью регистрации и последующей обработки электрокардиограммы (ЭКГ). Используется в мониторах для визуального наблюдения ЭКГ и диагностики нарушений, для слежения за показателями вариабельности сердечного ритма, отражающими состояние регуляторных процессов в организме.
Электроэнцефалография – метод исследования биоэлектрической активности мозга, дающий информацию о функциональном состоянии мозга и его отдельных участков. Используется при мониторинге активности центральной нервной системы, в частности, при определении глубины анестезии с помощью биспектрального анализа электроэнцефалограммы, а также путем оценки слуховых вызванных потенциалов мозга.
Импедансная плетизмография (электроплетизмография, реография) – метод исследования центральной и периферической гемодинамики, основанной на изучении сопротивления тканей переменному электрическому току. При мониторинге параметров гемодинамики (частоты сердечных сокращений (ЧСС), ударного объема, общего периферического сопротивления, параметров венозного отдела кровообращения и др.) оценивается пульсирующая составляющая сопротивления тканей, возникающая вследствие изменения интенсивности кровотока. При мониторинге содержания и распределения жидкости в организме оценке подвергается базовая составляющая сопротивления тела на различных частотах. В многоканальных мониторах метод используется для слежения за параметрами дыхания, например, частотой дыхания (ЧД).
Фотоплетизмография – метод исследования периферической гемодинамики, основанный на изучении поглощения света, проходящего через исследуемый участок ткани с пульсирующей кровью. Используется в мониторах пациента для определения ЧСС, величины интенсивности пульсации кровотока, а также в пульсоксиметрах.
Осциллометрия – метод исследования параметров периферической гемодинамики, осуществляемый путем регистрации и анализа пульсаций давления в окклюзионной манжетке, окружающей исследуемый сосуд. Используется в клиническом мониторинге для слежения за параметрами артериального давления (АД) крови.
Оксиметрия и капнометрия – методы исследования функции внешнего дыхания, основанные на анализе состава выдыхаемых газов или газов крови исследуемых участков тканей. Используется в клиническом мониторинге с целью следящей оценки концентрации кислорода (углекислого газа) в выдыхаемом воздухе, напряжения кислорода в крови, сатурации гемоглобина крови кислородом.
Развитие средств регистрации и методов обработки биологических сигналов, а также широкое использование микропроцессорной техники привело к объединению отдельных приборов измерения и контроля физиологических параметров в многофункциональные мониторные системы, позволяющие вести комплексную оценку состояния пациента на основе регистрации и компьютерной обработки биомедицинских сигналов.
Биомедицинские сигналы
Биомедицинские сигналы представляют собой физические проявления физиологических процессов живого организма, которые могут быть измерены и представлены в виде удобном для обработки с помощью электронных средств (например, в виде величины электрического напряжения или тока). Обработка биосигналов проводится с целью выделения информативных, с точки зрения медицинской диагностики, признаков биосигнала, или с целью определения диагностических показателей, вычисляемых по параметрам биосигнала. По механизму образования биосигналов в живом организме можно выделить две основные группы биосигналов.
К первой группе можно отнести биосигналы связанные с образованием в организме физических полей биологического происхождения, ко второй группе – биосигналы, связанные с изменениями физических характеристик участка биологической ткани происходящими под влиянием протекания физиологических процессов.
Первая группа биосигналов включает сигналы, обусловленные биоэлектрической активности органов и тканей, связанные с наличием в организме сравнительно низкочастотных электрических полей биологического происхождения, вызванные электрохимическими и кинетическими процессами, протекающими в организме. Они, как правило, характеризуют функционирование отдельных органов и функциональных систем. Низкочастотные электрические поля в значительной степени экранируются проводящими тканями биологического объекта с неоднородным распределением электрической проводимости.
Электрические поля являются причиной создания на кожном покрове биоэлектрических потенциалов, при этом можно выделить квазистатический электрический потенциал, имеющийся на определённом участке поверхности, и потенциал, изменяющийся синхронно с изменением свойств определённого органа или системы при его функционировании.
Таким образом, на кожном покрове будет иметься постоянный потенциал относительно зоны, взятой за базовую, и переменный – который характеризует работу соответствующего органа или функциональной системы. Спектр переменных биосигналов, характеризующих функционирование органов и систем, лежит в полосе частот от долей Гц до единиц кГц. Разность квазистатических потенциалов между участками на кожном покрове человека достигает долей вольта и, в значительной степени, зависит от электродов, с помощью которых они регистрируются. Разность переменных потенциалов оценивается в диапазоне от мкВ до десятков мВ.
Наибольшую диагностическую ценность имеют переменные биосигналы, характеризующие функционирование сердца, центральной нервной системы, опорно-двигательного аппарата, состояние нервно-мышечной проводимости и др. Приведём краткую характеристику некоторых из них.
Электрокардиографический (ЭКГ) сигнал представляет собой изменение во времени электрического потенциала определённых участков кожи возникающее под действием биоэлектрической активности сердца.
На рисунке 1 приведён фрагмент электрокардиографического сигнала (ЭКГ), зарегистрированного у здорового человека в нормальных условиях. Диапазон изменений амплитуды ЭКГ сигнала составляет 0,3…3,0 мВ; частотный диапазон сигнала составляет – 0,05…300 Гц.
Используется в кардиологической диагностике для контурного, в том числе и визуального анализа сигнала на коротких записях, автоматизированного поиска и идентификации аномальных участков сигнала при длительной записи (системы Холтеровского мониторирования), определении показателей вариабельности ритма сердца. В системах клинического мониторинга электрокардиографический сигнал используется для отображения на экране монитора с целью визуального наблюдения сигнала в нескольких отведениях, диагностики нарушений ритма, для слежения за показателями вариабельности сердечного ритма, отражающими состояние регуляторных процессов в организме.
Рисунок 1 – ЭКГ сигнал в норме, зарегистрированный в 12 отведениях
Магнитокардиографический сигнал представляет собой изменение во времени магнитного поля, возникающего вследствие биоэлектрической активности сердца. Регистрируется бесконтактно с помощью магнитометров, преобразующих интенсивность магнитного поля в электрический сигнал. Магнитокардиографический сигнал используется в кардиологической диагностике, в частотности в перинатологии, для контурного визуального анализа сигнала на коротких записях, а также для картирования распределения магнитного поля по сердцу.
Электроэнцефалографический сигнал – представляет собой изменение во времени электрического потенциала определённых участков кожи головы возникающее под действием биоэлектрической активности центральной нервной системы. На рисунке 2 приведён электроэнцефалографический сигнал (ЭЭГ), зарегистрированный в восьми отведениях у здорового бодрствующего человека. Диапазон изменений амплитуды ЭЭГ сигнала составляет 0,002…0,1 мВ; частотный диапазон сигнала составляет – 0,3…80 Гц.
Рисунок 2 – Электроэнцефалограмма здорового бодрствующего человека в состоянии покоя. Одновременное отведение по восьми каналам
Регистрация и анализ ЭЭГ сигналов используется в диагностике функционального состояния мозга и его отдельных участков, в основном, путём топографического анализа амплитуд отдельных частотных компонент сигнала, называемых ритмами, на коротких записях. Основными ритмами ЭЭГ сигнала являются: альфа-ритм (8…13 Гц), бета-ритм (13…35 Гц) и гамма-ритм (35…80 Гц).
Электроэнцефалография применяется при мониторинге активности центральной нервной системы, в частности, при определении глубины анестезии с помощью биспектрального анализа ЭЭГ сигнала, а также на основе оценки вызванных аудиторных биопотенциалов мозга. ЭЭГ сигнал также находит применение в системах человеко-машинных интерфейсов для передачи данных от человека-оператора к управляемому с помощью биосигналов автоматизированному машинному комплексу.
Электрокортикографический сигнал представляет собой изменение во времени электрического потенциала определённых участков головного мозга с помощью электродов отводящих биопотенциалы непосредственно от коры головного мозга. Диапазон изменения амплитуды сигнала составляет 0,01…0,2 мВ, частотный диапазон составляет 0,3…80 Гц.
Электрокортикографический сигнал используется в исследованиях и детальной диагностике функционального состояния мозга и его отдельных участков, в основном, на основе топографического контурного анализа сигнала на коротких записях.
Электромиографический сигнал (ЭМГ) представляет собой изменение во времени электрического потенциала мышц. Регистрируется с помощью электродов накладываемых на кожу в проекции исследуемых мышц. Диапазон изменения амплитуды сигнала составляет 0,02…3,0 мВ, частотный диапазон составляет 0,1…1000 Гц.
Регистрация и обработка ЭМГ сигнала используется в диагностике функционального состояния нервно-мышечной проводимости, состояния опорно-двигательного аппарата в основном, с использованием анализа топографии и амплитуды сигнала на коротких записях. Используется при исследовании выраженности Н-рефлекса, также применяется при мониторинге нервно- мышечной проводимости во время наркоза.
Электроокулографический сигнал представляет собой изменение во времени корнеоретинального электрического потенциала, вызываемого движением глазного яблока. Регистрируется с помощью электродов накладываемых на кожу в области век. На рисунке 3 приведены электроокулографические сигналы, записанные одновременно с ЭЭГ сигналом и ЭМГ сигналом напряжения мышц подбородка.
Диапазон изменения амплитуды электроокулографического сигнала составляет 0,01…0,2 мВ, частотный диапазон составляет 0,1…7 Гц. Электроокулографические сигналы используется в диагностике функционального состояния вестибулярного аппарата у человека, путём топографического контурного анализа сигнала на коротких записях, в частности, для диагностики нистагма, характеризующего нарушения нормального функционирования организма на вестибулярные воздействия.
Рисунок 3 – Сон с быстрым движением глаз; сверху вниз: ЭЭГ сигнал;
электроокулограмма обоих глаз; ЭМГ сигнал напряжения мышц
подбородка
Электрогастрографический сигнал представляет собой изменение во времени электрического потенциала, возникающего при работе желудочно-кишечного тракта. Регистрируется с помощью электродов накладываемых на кожу передней брюшной стенки. На рисунке 4 приведены записи электрогастрографического сигнала человека, записанные до и после лечения язвенной болезнью желудка.
Рисунок 4 – Электрогастрограммы больного язвенной болезнью желудка:
1 — до лечения; 2 — после лечения
Диапазон изменения амплитуды электрогастрографического сигнала составляет 0,2…1,0 мВ, частотный диапазон составляет 0,05…2,0 Гц. Электрогастрография используется в диагностике функционального состояния желудочно-кишечного тракта, в основном, с помощью топографического контурного анализа сигнала на коротких записях.
Сигнал кожно-гальванической реакции (по Тарханову) представляет собой медленное изменение во времени электрического потенциала определённых участков кожи в ответ на психологические тесты. По Фере кожно-гальваническая реакция проявляется в изменении электрокожного сопротивления. Кожно-гальваническую реакцию связывают с секреторной деятельностью потовых желёз, расположенных под электродами и контролируемыми непосредственно ЦНС. На рисунке 5 приведён сигнал кожно-гальванической реакции (КГР) человека, зарегистрированного во время игры в шахматы, в нижней части рисунка приведены сопровождающие решение речевые рассуждения. Резкое падение сопротивления кожи является показателем эмоциональной активации в момент принятия решения.
Диапазон изменения амплитуды сигнала кожно-гальванической реакции составляет 0,1…2 мВ, частотный диапазон составляет 0,1…10 Гц. Регистрация и обработка сигнала кожно-гальванической реакции используется в диагностике психоэмоционального состояния человека на основе контурного анализа сигнала на коротких записях.
Рисунок 5 – Динамика кожно-гальванической реакции в процессе
решения мыслительной (шахматной) задачи (по О.К. Тихомирову)
Фонокардиографический сигнал представляет собой изменение во времени акустических (звуковых) проявлений работы сердца. Регистрируется с помощью микрофона, накладываемого на грудь обследуемого в проекции сердца и преобразующего звуковые колебания в электрический сигнал. На рисунке 6 приведён фонокардиографический сигнал, зарегистрированный одновременно с ЭКГ сигналом. Диапазон изменения амплитуды фонокардиографического сигнала в зависимости от типа используемого микрофона составляет 0,1…2 мВ, частотный диапазон составляет 20…800 Гц.
Фонокардиография используется в кардиологической диагностике путём контурного визуального анализа сигнала на коротких записях, часто в совокупности с электрокардиографическими сигналами. В электронных стетоскопах используется для прослушивания сердечных тонов и выявления патологий в биомеханике сердца.
Сфигмографический сигнал представляет собой изменение во времени колебаний сосудистой стенки. Регистрируется с помощью датчиков давления преобразующих колебания сосудистой стенки в электрический сигнал, накладываемых на кожу в местах пролегания сосудов в непосредственной близости от поверхности кожи. Диапазон изменения амплитуды сфигмографического сигнала в зависимости от применяемого датчика составляет 0,1…2 мВ, частотный диапазон составляет 0,3…70 Гц.
Рисунок 6 – Фонокардиограмма (а), электрокардиограмма (б);
систолический (I), диастолический (II), желудочковый (III) тон
Регистрация сфигмографических сигналов используется в кардиологической диагностике для контурного анализа сигнала на коротких записях с целью определения эластических свойств сосудов и дисфункции сосудистого эндотелия, а также в системах неинвазивного мониторинга артериального давления.
Вторая группа биосигналов требует для своей регистрации приложения к биологическим тканям внешних физических полей.
Реографический сигнал представляет собой изменение во времени электрического сопротивления участка биологической ткани, расположенного между измерительными электродами. Для регистрации реографического сигнала через участок исследуемых биологических тканей пропускается переменный электрический ток с частотой порядка сотен кГц и амплитудой не превышающей 1 мА. Амплитуда сигнала измеряется как падение напряжения на участке биологических тканей, расположенных между измерительными электродами и составляет не менее 1 мВ. Частотный диапазон биосигнала составляет 0,3…70 Гц.
Методы реографии используются в кардиологической практике для определения параметров центрального кровотока (по Тищенко), например, величины сердечного выброса с помощью дифференциальной реограммы, и параметров периферического кровотока, например, формы пульсовой волны, величины индекса перфузии.
Фотоплетизмографический сигнал представляет собой изменение во времени объёма кровеносного сосуда под действием пульсовых волн. Для регистрации фотоплезмографического сигнала через исследуемый участок биологических тканях пропускается поток излучения оптического или инфракрасного диапазона. Величина сигнала измеряется как ослабление излучения, проходящего через исследуемый участок биологической ткани, содержащей кровеносный сосуд (или отражённого от участка, исследуемой биологической ткани). Амплитуда сигнала при использовании широкополосного фотоприёмника составляет не менее 0,1 мВ. Частотный диапазон составляет 0,3…70 Гц.
Методы фотоплетизмографии используются в кардиологической практике для определения параметров периферического кровотока, например, с целью определения эластических свойств сосудов. В клиническом мониторинге используется при построении пульсоксиметров для неинвазивного мониторинга степени насыщения крови кислородом.
Плетизмографический сигнал представляет собой изменение во времени давления в компрессионной манжетке, охватывающей исследуемый кровеносный сосуд (например, плечевая окклюзионная манжетка). Для регистрации плетизмографического сигнала в компрессионной манжетке создаётся окклюзионное давление воздуха. Величина сигнала измеряется с помощью датчика давления воздуха, подключаемого к манжетке. Амплитуда изменения сигнала при использовании современных тензометрических датчиков давления составляет порядка 0,1 мВ. Частотный диапазон составляет 0,3…70 Гц.
Методы плетизмографии используется при построении приборов измерения артериального давления крови, а так же при исследовании эластических свойств сосудов.
Биосигналы регистрируемые с помощью различных плетизмографических или сфигмографических датчиков обобщённо можно назвать сигналами артериальной пульсации крови или пульсовыми волнами, распространяющимися по артериальному руслу человека. Форма таких сигналов зависит прежде всего от места регистрации, а не от физического способа преобразования сигнала пульсации в выходной электрический сигнал. На рисунке 7 приведён сигнал пульсовой волны, зарегистрированный с помощью пальцевого фотометрического датчика у здорового молодого человека в состоянии покоя.
Рисунок 7 – Сигнал артериальной пульсации крови зарегистрированный с пальца человека фотоплетизмографическим датчиком
Краткое рассмотрение характеристик, наиболее часто используемых при построении диагностических методик регистрации и обработки биосигналов, обнаруживает их основные особенности – малую амплитуду, низкочастотный спектр и чувствительность к воздействию помех.
При проведении регистрации на биосигнал всегда накладываются сигналы наводок (помех) и шумов. Наводки возникают вследствие действия внешних физических полей, не имеющих прямого отношения к объекту исследований. Помехи физической природы возникновения оказывают влияние на чувствительный элемент измерительного преобразователя или на отдельные узлы или цепи устройства преобразования биосигнала.
Шумы характерны как для измерительной аппаратуры, так и для объекта измерений. Под шумами понимаются такие сигналы, которые появляются на выходе вследствие особенностей функционирования и параметров измерительной аппаратуры, а также вследствие работы других подсистем и наличия процессов в организме, в результате которых возникают сигналы, не имеющих прямого отношения к определяемым показателям или характеристикам.
Так, например, если при измерении малых разностей потенциалов между участками кожного покрова электроды будут непрерывно колебаться из-за колебаний кожи, то при больших переходных сопротивлениях в месте контакта электродов с кожей и при нестабильности контактных явлений аппаратура покажет наличие переменного сигнала, появившегося в результате взаимодействия чувствительного элемента (электродов) с объектом измерений и не характерен для объекта, находящегося в нормальном состоянии.
В медицинской практике шумы биологического происхождения, вызванные процессами, не имеющими прямого отношения к определяемым параметрам или характеристикам, называют часто влиянием артефактов. К артефактам биологического происхождения, как правило, относятся помехи, обусловленные дыханием или движениями обследуемого во время регистрации биосигналов, а также любую активность систем организма, не связанную с регистрируемым процессом, но оказывающую влияние на определяемые значения диагностических показателей. Наиболее ярким примером таких процессов может служить миографическая активность периферических мышц при регистрации ЭКГ сигнала.
Основными видами помех физического происхождения являются помехи электрической природы, обусловленные воздействием электрических сетей питания, шумами аналоговых элементов измерительного преобразователя биомедицинских сигналов, шумами квантования аналого-цифрового преобразования биосигналов.
К артефактам физиологического происхождения, как правило, относятся помехи, обусловленные дыханием или движениями обследуемого во время регистрации биосигналов, а также любую активность систем организма, не связанную с регистрируемым процессом, но оказывающую влияние на определяемые значения диагностических показателей. Наиболее ярким примером таких процессов может служить миографическая активность периферических мышц при регистрации ЭКГ сигнала.
Очень часто трудно отличить присутствующие помехи и шумы от биомедицинских сигналов, появившихся вследствие взаимодействия с объектом измерения чувствительного элемента измерительного преобразователя. Вследствие этого, даже располагая аппаратурой с гарантированными метрологическими характеристиками, нельзя с полной уверенностью утверждать, что погрешность результатов измерений не превышает значений, нормированных для технического измерительного средства.
Наиболее эффективным способом уменьшения влияния артефактов различной природы возникновения на регистрируемые биомедицинские сигналы является использование методов цифровой фильтрации, к преимуществам которых относятся высокая точность, гибкость настройки и стабильность функционирования.
Другим важным фактором при исследовании биологических организмов является их изменчивость и индивидуальность параметров и показателей. Даже на групповом уровне проявляется зависимость от национальных, возрастных, генетических и климатических особенностей, поэтому корректным является описание свойств биосигналов у группы организмов, в которой проводятся исследования одних и тех же проявлений.
Для установления каких-либо закономерностей в медицинской диагностике широко применяются методы математической статистики. Это обусловлено тем, что из-за субъективности и многофакторности получаемых результатов установить объективные закономерности можно только после математической обработки достаточно большого массива статистического материала. Получение такого фактического материала часто затруднительно, так как некоторые биологические процессы по длительности соизмеримы с продолжительностью существования биологической системы, и даже в тех случаях, когда определение интересующего параметра или показателя можно выполнить относительно быстро, набор статистического материала, анализ полученных данных с целью установления объективных закономерностей, занимает значительные промежутки времени.
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Концепция современной клинической диагностики.
2. Биомедицинские сигналы и их основные характеристики.
3. Особенности регистрации биомедицинских сигналов.
4. Шумы и помехи, возникающие при регистрации биомедицинских сигналов.
5. Биомедицинские сигналы электрофизиологической природы возникновения.
6. Биомедицинские сигналы артериальной пульсации крови.
Практическое занятие № 2. Классификация и общие сведения о цифровых фильтрах
В общем случае под фильтром сигналов понимается устройство, предназначенное для выделения желательных компонентов спектра сигнала и/или подавления нежелательных компонентов. В зависимости от типа сигнала все электронные фильтры можно разделить на два класса: аналоговые и цифровые фильтры. Цифровые фильтры в свою очередь в зависимости от способа реализации можно классифицировать на программные и аппаратные. Аппаратные цифровые фильтры реализуются на элементах интегральных схем, в то время как программные фильтры реализуются с помощью программ, выполняемых на ПЛИС, микроконтроллерами или ЭВМ.
По виду амплитудно-частотной характеристики (АЧХ) все фильтры подразделяются на фильтры низких частот (ФНЧ), фильтры высоких частот (ФВЧ), полосовые фильтры и режекторные фильтры. ФНЧ пропускает низкие частоты и задерживает высокие, ФВЧ задерживает низкие частоты и пропускает высокие, полосовой фильтр пропускает полосу частот от ω1 до ω2 и задерживает те частоты, которые расположены выше или ниже этой полосы частот, режекторный фильтр задерживает полосу частот от ω1 до ω2 и пропускает частоты, расположенные выше или ниже этой полосы частот.
Другой классификацией фильтров является классификация по типу импульсной характеристики фильтра. Под импульсной характеристикой фильтра подразумевается его реакция на единичный импульс (математическая модель – дельта-функция Дирака) при нулевых начальных условиях. Применительно к теории цифровых фильтров импульсная характеристика часто называется ядром фильтра. Единичный импульс в цифровых системах представляет собой импульс минимальной длительности равной периоду дискретизации и максимальной амплитуды. Выходной сигнал цифрового фильтра может быть получен с помощью свёртки импульсной характеристики фильтра и входного сигнала:
где: x(n) – входной сигнал, y(n) – выходной сигнал, n=0, 1, 2,…, N–1: номер отсчёта дискретного сигнала, N – общее количество отсчётов дискретного сигнала.
По типу импульсной характеристики фильтры подразделяются на рекурсивные и нерекурсивные. Рекурсивные фильтры или фильтры с бесконечной импульсной характеристикой (БИХ) представляют собой фильтры, использующие один или несколько выходов в качестве входа, то есть представляют собой фильтры с обратной связью. Основным свойством таких фильтров является то, что их импульсная характеристика имеет бесконечную длину во времени, а передаточная характеристика имеет дробно-рациональный вид.
Нерекурсивные фильтры или фильтры с конечной импульсной характеристикой (КИХ) представляют собой фильтры с ограниченной во времени импульсной характеристикой (с определённого момента времени импульсная характеристика становится точно равной нулю). Знаменатель передаточной характеристики фильтра представляет собой константу.
Передаточная характеристика цифрового фильтра представляет собой дифференциальный оператор, выражающий связь между входным и выходным сигналами фильтра. В теории цифровых фильтров принято записывать передаточную характеристику как отношение z-преобразований выходного и входного сигналов.
Z-преобразованием или преобразованием Лорана называется свёртывание исходного сигнала, заданного последовательностью вещественных отсчётов во временной области, в аналитическую функцию комплексной частоты. Для одностороннего варианта z-преобразование имеет следующий вид:
где: A – амплитуда комплексного числа z, φ – фаза комплексного числа z.
Обратное z-преобразование имеет следующий вид:
где: C – контур, охватывающий область сходимости X(z) и содержащий все вычеты X(z).
Z-преобразование простейших дискретных функций представлено в Таблице 1.
Таблица 1 – Z-преобразование некоторых функций
Сигнал, x(n) |
Z-преобразование, X(z) |
δ(n) |
1 |
δ(n–n0) |
|
u(n) |
|
a·u(n) |
|
Основной способ проектирования цифровых фильтров заключается в преобразовании известной передаточной характеристики соответствующего аналогового фильтра из s-области в z-область с использованием билинейного преобразования (преобразования Тастина). Данный подход обусловлен тем, что методы синтеза аналоговых фильтров хорошо известны и тщательно проработаны. Билинейное преобразование осуществляется с помощью подстановки следующего вида:
где: T – интервал дискретизации сигнала.
Передаточная характеристика БИХ-фильтра в z-области в общем случае имеет следующий вид:
где: ak – коэффициенты обратной связи, bk – весовые коэффициенты входного сигнала, M – порядок входного сигнала, N – порядок обратной связи.
Разностное уравнение БИХ-фильтра, описывающее соотношение между входным и выходным сигналами, имеет следующий вид:
Импульсная характеристика или ядро БИХ-фильтра имеет следующий вид:
Частотная характеристика фильтра определяется на основании прямого преобразования Фурье от частотной характеристики фильтра:
где: h(n) – импульсная характеристика фильтра во временной области, n=0, 1, 2,…, N–1: отсчёты импульсной характеристики во временной области, k=0, 1, 2,…, N–1: отсчёты импульсной характеристики в частотной области.
При этом модуль прямого преобразования Фурье частотной характеристики фильтра представляет собой амплитудно-частотную характеристику фильтра, а аргумент – фазо-частотную характеристику.
На рисунке 1 приведена структурная схема реализации БИХ-фильтра. Устойчивость БИХ-фильтра зависит от его передаточной характеристики. Для дискретного фильтра необходимо и достаточно, чтобы все полюса (корни характеристического полинома, находящегося в знаменателе) его передаточной функции по модулю были меньше единицы, т.е. лежали внутри единичного круга на z-плоскости. Физическая реализуемость БИХ-фильтра подразумевает, что порядок числителя передаточной функции не превышает порядка знаменателя, при этом, как правило, выбирают M=N. БИХ-фильтры могут быть построены с использованием только трёх элементов или основных операций – умножитель, сумматор и блок задержки.
Рисунок 1 – Структурная схема реализации БИХ-фильтра (M=N)
Передаточная характеристика КИХ-фильтра в общем случае имеет следующий вид:
Разностное уравнение КИХ-фильтра имеет следующий вид:
КИХ-фильтры по аналогии с БИХ-фильтрами могут быть также реализованы с трёх элементов или основных операций – умножителя, сумматора и блока задержки. На рисунке 2 приведена структурная схема реализации КИХ-фильтра. Преимуществами КИХ-фильтров является устойчивость и возможность линеаризации фазовой характеристики. Недостатками КИХ-фильтров является то, что длительность импульсной характеристики может оказаться достаточно большой для достижения резкого спада частотной характеристики на границе зоны пропускания. Также необходимо отметить, что реализация КИХ-фильтров всегда сложнее, чем реализация БИХ-фильтров с аналогичными характеристиками. При решении задач цифровой фильтрации биомедицинских сигналов оба вида фильтров находят широкое применение.
Рисунок 2 – Структурная схема реализации КИХ-фильтра
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Классификация цифровых фильтров.
2. Основы теории цифровых фильтров. Импульсная и частотная характеристики фильтров.
3. Рекурсивные фильтры. Структурное построение.
4. Нерекурсивные фильтры. Структурное построение.
5. Z-преобразование.
6. Билинейное преобразование.
Лабораторная работа № 1. Фильтрация биосигналов в
частотной области
Рекурсивные фильтры по виду аппроксимирующего полинома передаточной характеристики классифицируются на фильтры Бесселя, Баттерворта, Чебышева и эллиптические фильтры.
Наиболее распространёнными при решении задач цифровой фильтрации биомедицинских сигналов являются фильтры Баттерворта. Амплитудная характеристика фильтра нижних частот Баттерворта имеет следующий вид:
где: n – порядок фильтра, ωc – частота среза фильтра (частота на которой амплитуда равна 0,707∙G0), G0 – коэффициент усиления на нулевой частоте (постоянной составляющей)
При бесконечных значениях n АЧХ фильтра становиться прямоугольной функцией, при этом частоты ниже частоты среза будут пропускаться с коэффициентом G0, а частоты выше частоты среза будут полностью подавляться.
К основным особенностям фильтров Баттерворта относятся максимально гладкая АЧХ в полосе пропускания и полосе затухания, которая снижается почти до нуля на частотах полосы затухания. Для фильтров первого порядка АЧХ затухает со скоростью –6 дБ на октаву или –20 дБ на декаду, для фильтров второго порядка скорость затухания АЧХ составляет –12 дБ на октаву или –40 дБ на декаду. Фильтры Баттерворта по сравнению с другими типами фильтров имеют более пологий спад в переходной области, поэтому с целью обеспечения требуемых характеристик подавления должны иметь более высокий порядок, что затрудняет процесс разработки аналоговых фильтров, но практически не влияет на разработку цифровых фильтров.
Другим недостатком фильтров Баттерворта является нелинейность его фазовой характеристики. Для устранения нелинейности фазовой характеристики сигнал после прохождения фильтра пропускается через него повторно, но в обратном по времени направлении.
Фильтры Бесселя характеризуются линейной фазо-частотной характеристикой, однако, имеют при этом пологую форму АЧХ с невысокой скоростью затухания характеристики в переходной зоне, что приводит к необходимости использования высоких порядков при разработке фильтров для достижения приемлемого затухания в полосе задержки фильтра. Передаточная характеристика фильтра Бесселя нижних частот имеет следующий вид:
где: θn(s) – обратный многочлен Бесселя n-го порядка, ω0 – частота среза фильтра.
На рисунке 1 показан график АЧХ характеристики (2) и ФЧХ (1) для низкочастотного Бесселя четвертого порядка.
Рисунок 1 – АЧХ (линия 2) и ФЧХ (линия 1) фильтра Бесселя третьего
порядка
Отличительной особенностью фильтров Чебышева является более крутой спад АЧХ, чем у рассмотренных ранее фильтров и существенные пульсации АЧХ в полосе пропускания (фильтр Чебышева I рода) или в полосе затухания (фильтр Чебышева II рода). Наличие пульсаций в полосе пропускания затрудняет использование данного типа фильтров при обработке биомедицинских сигналов, в силу невозможности присутствия нелинейных искажений биосигналов в задачах медицинской диагностики. АЧХ фильтра Чебышева I рода имеет следующий вид:
где: ε – показатель пульсаций, ω0 – частота среза фильтра, Tn(ω) – многочлен Чебышева n-го порядка. На частоте среза ω0 коэффициент усиления фильтра имеет значение . Пульсации в полосе пропускания задаются в децибелах и определяются следующим образом: .
АЧХ фильтра Чебышева II рода имеет следующий вид:
Характерной особенностью эллиптических фильтров является наличие пульсаций, как в полосе пропускания, так и в полосе подавления, при этом эллиптические фильтры имеют самый крутой спад АЧХ среди всех рассмотренных типов фильтров. АЧХ эллиптических фильтров низких частот имеет следующий вид:
где: ε – показатель пульсаций, ξ – показатель селективности, ω0 – частота среза фильтра, Rn(ω) – рациональная эллиптическая функция n-го порядка.
На рисунке 2 приведены АЧХ различных типов фильтров пятого порядка.
Рисунок 2 – АЧХ различных видов фильтров
Реализация методов частотной фильтрации биосигналов
в системе MATLAB
Реализация КИХ и БИХ фильтров в MATLAB выполняется с помощью функции filter, имеющей следующий синтаксис:
y=filter(b, a, x)
где: a – массив коэффициентов обратной связи; b – массив весовых коэффициентов входного сигнала; x – входной сигнал фильтра; y – выходной сигнал фильтра.
Для реализации КИХ фильтра достаточно присвоить параметру a значение ненулевой константы. Для реализации фильтрации с нулевой фазой используется функция filtfilt, имеющая одинаковый синтаксис с функцией filter. Фильтрация сигнала с использованием функции filtfilt заключается в реализации двунаправленной фильтрацией без внесения фазового сдвига. При использовании функции filtfilt сигнал проходит через фильтр в прямом направлении, а затем пропускается повторно через тот же фильтр, но в обратном по времени направлении (в другой последовательности отсчётов сигнала).
Для расчёта коэффициентов фильтра Баттерворта используется функция butter, имеющая следующий синтаксис:
[b, a]=butter(n, Wn, 'ftype')
где: a – массив коэффициентов обратной связи; b – массив весовых коэффициентов входного сигнала; n – порядок фильтра; Wn – нормализованная частота среза фильтра; ftype – спецификатор, определяющий тип фильтра. Если ‘ftype’ принимает значение ‘low’, то проектируется ФНЧ, если ‘high’ – ФВЧ, если ‘stop’ – режекторный фильтр.
В случае проектирования режекторного фильтра параметр Wn должен представлять собой массив из двух значений: Wn=[w1 w2], w1< w2, при этом диапазон частот [w1–w2] представляет собой полосу задержки режекторного фильтра, порядок режекторного фильтра равен 2∙n. Для проектирования полосового фильтра достаточно последовательно применить фильтрацию с использованием ФВЧ и ФНЧ.
Для расчёта коэффициентов фильтра Чебышева I типа используется функция cheby1 со следующим синтаксисом:
[b, a]=cheby1(n, Rp, Wn, 'ftype')
где: Rp – величина пульсаций фильтра в полосе пропускания фильтра в дБ.
Все остальные параметры функции аналогичны соответствующим параметрам функции butter.
Для расчёта коэффициентов фильтра Чебышева II типа используется функция cheby2 со следующим синтаксисом:
[b, a]=cheby2(n, Rs, Wn, 'ftype')
где: Rs – величина пульсаций фильтра в полосе затухания фильтра в дБ.
Для расчёта коэффициентов эллиптического фильтра используется функция ellip со следующим синтаксисом:
[b, a]=ellip(n, Rp, Rs, Wn, 'ftype')
где: Rp – величина пульсаций фильтра в полосе пропускания фильтра в дБ; Rs – величина пульсаций фильтра в полосе затухания фильтра в дБ.
Для расчёта коэффициентов фильтра Бесселя используется функция besself со следующим синтаксисом:
[b, a]=besself(n, Wn, 'ftype')
Для построения частотных характеристик разработанных фильтров в среде MATLAB используются функции freqs и freqz, имеющие похожий синтаксис. Функция freqs используется для построения частотной характеристика аналогового фильтра по коэффициентам передаточной характеристики в s-плоскости, а функция freqz – частотной характеристики дискретного фильтра по коэффициентам передаточной характеристики в z-плоскости. Синтаксис функции freqz имеет следующий вид:
[h, w]=freqz(b, a, l)
где: a – массив коэффициентов знаменателя передаточной характеристики; b – массив коэффициентов числителя передаточной характеристики; h – массив значений комплексной частотной характеристики; w – соответствующий массив круговых частот, равномерно распределённых в диапазоне от 0 до π радиан на отсчёт; l – количество частотных точек, опциональный параметр, по умолчанию частотные характеристики рассчитываются по 512 точкам.
Для реализации режекторного фильтра в MATLAB используется специальная функция iirnotch.
[num, den] = iirnotch(w0, bw)
где: den – массив коэффициентов обратной связи; num – массив весовых коэффициентов входного сигнала; w0 – нормализованная частота режекции периодической помехи (подавления); bw= w0/Q, где Q – добротность фильтра.
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
1. Загрузите файл ecgX.txt, где X – номер Вашего варианта. Частота дискретизации ЭКГ сигнала составляет 500 Гц. Используя методы цифровой фильтрации добейтесь уменьшения интенсивности присутствующих помех.
2. Сравните эффективность фильтрации ЭКГ сигнала от присутствующих высокочастотных помех, используя различные типы ФНЧ (фильтр Баттерворта, фильтр Бесселя, фильтр Чебышева). При фильтрации биосигналов используйте различные значения частоты среза и порядка фильтров с целью получения наилучшего результата фильтрации.
3. Примените режекторный фильтр для устранения периодических высокочастотных помех от сетевой линии, присутствующих на ЭКГ сигнале.
4. Сравните эффективность фильтрации ЭКГ сигнала от присутствующих низкочастотных помех, используя различные типы ФВЧ (фильтр Баттерворта, фильтр Бесселя, фильтр Чебышева).
СОДЕРЖАНИЕ ОТЧЁТА
1. Цель работы.
2. Листинги написанных программ (M-файлов) в среде MATLAB для каждого задания.
3. Сводная таблица результатов, содержащая полученные в результате проведённых исследований графики зависимостей изменения фрагментов биосигналов от времени до и после фильтрации.
4. Выводы о полученных результатах, сопоставление с теорией.
Лабораторная работа № 2. Фильтрация биосигналов во
временной области
Существует целый класс фильтров, результатом разработки которых не является определённая частотная характеристика получаемых фильтров. Несмотря на это данный класс фильтров обладает частотной характеристикой, получаемой с помощью операции прямого преобразования Фурье его импульсной характеристики, и также может быть классифицирован на ФНЧ и ФВЧ. Преимуществом фильтрации во временной области является то, что нет необходимости в оценки спектральных характеристик сигнала и помехи, кроме того обработка во временной области во многих случаях выполняется быстрее, чем в частотной.
Для устранения случайных шумов, в том числе шумов квантования, высокочастотных артефактов и помех, для сглаживания сигнала наиболее часто используется фильтрация скользящего среднего. В общем случае фильтр скользящего среднего задаётся следующим образом:
где: x(n) – входной сигнал, N – порядок фильтра, bk – набор весовых коэффициентов фильтра, y(n) – выходной сигнал.
На рисунке 1 приведена структурная схема фильтра скользящего среднего.
Рисунок 1 – Структурная схема фильтра скользящего среднего
Фильтр скользящего среднего является КИХ фильтром. К преимуществам фильтра скользящего среднего относится простота его реализации, линейность фазовой характеристики, при условии, что набор весовых коэффициентов фильтра является симметричным или антисимметричным.
Наиболее простой реализацией фильтр скользящего среднего является фильтр фон Ганна или фильтр Хеннинга, определяемый следующим выражением:
Импульсную характеристику фильтра Хеннинга можно получить при условии, что входной сигнал представляет собой единичный импульс x(n)=δ(n):
Передаточная функция фильтра Хеннинга в z-области определяется следующим выражением:
Частотная характеристика фильтра Хеннинга получается из передаточной функции путём подстановки: z=ejωT, T – интервал дискретизации сигналов, ω – частота в рад/с. Если положить T=1 и иметь дело с нормализованной частотой в диапазоне 0≤ ω ≤2π и 0≤ f ≤1, тогда f=1 и ω=2π представляют собой частоту дискретизации, при этом более низкие значения частот будут представлять нормализованные частоты в пределах частоты дискретизации.
На рисунке 2 приведены амплитудная и фазовая характеристики сглаживающего фильтра Хеннинга (частота дискретизации сигналов равна 1000 Гц).
Более существенное сглаживание может быть достигнуто путём усреднения отсчётов в более продолжительном временном окне за счёт увеличения задержки фильтра, например на основе применения сглаживающего 8-точеного фильтра скользящего среднего, задаваемого следующим выражением:
Рисунок 2 – Амплитудная и фазовая характеристики сглаживающего
фильтра Хеннинга
На рисунке 3 приведены частотная характеристика сглаживающего 8-точечного фильтра скользящего среднего (частота дискретизации сигналов равна 1000 Гц).
Рисунок 3 – Частотная характеристика сглаживающего 8-точечного
фильтра скользящего среднего
Таким образом, свойства фильтров скользящего среднего определяются шириной окна усреднения отсчётов N, которая зависит от частоты дискретизации и спектральных характеристик фильтруемого сигнала.
Для устранения низкочастотных артефактов и постоянной составляющей, присутствующих при регистрации биосигналов, во временной области используются фильтры, основанные на выполнении операции дифференцирования.
При цифровой обработке сигналов базовое определение первой производной задаётся оператором первой разности:
Передаточная функция оператора первой разности в z-области имеет вид:
Частотная характеристика оператора первой разности определяется выражением:
Зависимости АЧХ и ФЧХ оператора первой разности приведены на рисунке 4.
Таким образом, оператор первой разности полностью удаляет постоянную составляющую сигнала, а также ослабляет низкочастотные компоненты, но при этом приводит к усилению высокочастотных компонент сигнала, в том числе высокочастотных помех и шумов, содержащихся в исходном биосигнале, что может привести к увеличению зашумлённости сигнала. В силу этого, перед применением операций дифференцирования часто используют предварительную низкочастотную фильтрацию биосигналов. К преимуществам оператора первой разности относят простоту реализации, линейную фазовую характеристику.
Зачастую оператор первой разности приводит к значительному усилению высокочастотных компонент сигнала, являющихся информационными признаками биосигналов. Например, при разработке методов детектирования QRS-комплексов ЭКГ сигнала, являющихся наиболее высокочастотным компонентом сигнала, используют методы цифровой обработки на основе применения операций дифференцирования для выделения информативных признаков биосигналов.
Рисунок 4 – Амплитудная и фазовая характеристики оператора
первой разности
Проблема нежелательного усиления высокочастотных компонентов оператором первой разности может быть решена путём использования оператора трёхточечной центральной разности:
Передаточная функция оператора трёхточечной центральной разности имеет следующий вид:
Передаточная функция оператора трёхточечной центральной разности представляет собой произведение передаточных функций оператора первой разности и двухточечного фильтра скользящего среднего и, следовательно, может быть реализован за счёт каскадного соединения соответствующих фильтров.
На рисунке 5 приведены зависимости АЧХ и ФЧХ оператора трёхточечной центральной разности. Оператор трёхточечной центральной разности может рассматриваться как один из вариантов полосовой фильтрации, реализуемой во временной области.
Рисунок 5 – Амплитудная и фазовая характеристики оператора
трёхточечной центральной разности
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
1. Загрузите файл ecgX.txt, где X – номер Вашего варианта. Частота дискретизации ЭКГ сигнала составляет 500 Гц. Используя методы цифровой фильтрации во временной области добейтесь уменьшения интенсивности присутствующих помех.
2. Сравните эффективность фильтрации ЭКГ сигнала от присутствующих высокочастотных помех, используя различные типы фильтров скользящего среднего с целью получения наилучшего результата фильтрации.
3. Примените оператор первой производной для устранения низкочастотных артефактов, присутствующих на ЭКГ сигнале.
4. Оцените эффективность фильтрации ЭКГ сигнала с использованием фильтров во временной области в сравнении с частотными рекурсивными фильтрами.
СОДЕРЖАНИЕ ОТЧЁТА
1. Цель работы.
2. Листинги написанных программ (M-файлов) в среде MATLAB для каждого задания.
3. Сводная таблица результатов, содержащая полученные в результате проведённых исследований графики зависимостей изменения фрагментов биосигналов от времени до и после фильтрации.
4. Выводы о полученных результатах, сопоставление с теорией.
Лабораторная работа № 3. Корреляционная фильтрация
биомедицинских сигналов
Двигательные артефакты носят случайный характер и приводят к наибольшим искажениям биосигналов. Обработка биосигналов на фоне присутствия двигательных артефактов сталкивается с рядом трудностей, заключающихся в том, что природа появления двигательных артефактов имеет случайный характер, а их частотные компоненты зачастую перекрываются с основной полосой частот биосигналов (ЭКГ сигнал, сигнал артериальной пульсации крови). Одним из наиболее эффективных способов уменьшения влияния двигательных артефактов является использование устойчивых алгоритмов обработки, в том числе основанных на применении методов корреляционной обработки.
Методы корреляционной обработки биосигналов могут также применяться в задачах обнаружения повторяющихся или типовых событий, например, QRS-комплексов ЭКГ сигнала или спайк-волн ЭЭГ сигнала.
Суть корреляционной обработки сигналов заключается в вычислении взаимно-корреляционной функции между фрагментом обрабатываемого сигнала и неким эталонным образцом данного сигнала, свободного от проявления искажающих помех и шумов. Корреляционные фильтры (согласованные фильтры) используются для обнаружения скрытых в шумах сигналов с известными характеристиками.
Большинство биомедицинских сигналов являются квазипериодическими сигналами, содержащими повторяющиеся эпохи, имеющие схожие друг с другом характеристики. В качестве образца какой-либо эпохи биомедицинского сигнала, как правило, используется либо усреднённый фрагмент данного сигнала, свободный от помех и шумов, либо модельная аппроксимация фрагмента биосигнала, построенная на основе априорно известных данных о форме и амплитудно-временных характеристик опорного фрагмента.
Пусть x(t) опорный сигнал, представляющий собой идеальный образец изучаемого события; X(f) – преобразование Фурье от x(t). Рассмотрим прохождение x(t) через линейный инвариантный во времени фильтр, импульсная характеристика которого h(t), частотная характеристика H(f). Выходной сигнал фильтра в данном случае определяется выражением y(t)=x(t)*h(t) или Y(f)=X(f)∙H(f). Выходная энергия максимизируется, если частотная характеристика фильтр определяется выражением следующего вида:
H(f)=K X*(f)∙exp(–j2πft0)
где: K – масштабирующий коэффициент, t0 – временная задержка.
Соответствующая импульсная характеристика фильтра имеет вид:
h(t)=K x(t– t0)
Частотная характеристика согласованного фильтра пропорциональна комплексно сопряжённому преобразованию Фурье обнаруживаемого сигнала. Во временной области импульсная характеристика фильтра представляет собой обращённую или отражённую версию опорного сигнала, который был задержан и промасштабирован. Величина задержки определяется длительностью опорного фрагмента сигнала.
В силу того, что импульсная характеристика фильтра представляет собой отражённую версию x(t), операция свёртки, выполняемая согласованным фильтром эквивалентна корреляции: выходной сигнал в этом случае равен функции взаимной корреляции между входным и опорным сигналом. Когда фрагмент входного сигнала фильтра, отличного от x(t) сопоставляется с опорным сигналом, выходной сигнала согласованного фильтра аппроксимирует автокорреляционную функцию опорного сигнала при соответствующей временной задержке.
Результат в частотной области будет определяться следующим выражением, представляющим собой спектральную плотность мощности опорного сигнала без учёта временной задержки и масштабирующего коэффициента:
Y(f)=X(f)∙H(f)=X(f)∙X*(f)=Sxx(f)
Таким образом, выходной сигнал согласованного фильтра достигает своего максимума в момент появления сигнала, являющегося аппроксимацией опорного сигнала.
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
1. Загрузите файл ecgX.txt, где X – номер Вашего варианта. Частота дискретизации ЭКГ сигнала составляет 500 Гц. Сформируйте эталонный образец одного кардиоцикла ЭКГ сигнала.
2. Используя метод корреляционной обработки сигналов проведите цифровую фильтрацию зашумлённого ЭКГ сигнала.
3. Сравните эффективность фильтрации ЭКГ сигнала на основе методов согласованной обработки с аналогичными результатами, полученными с использованием фильтрации во временной области и частотной полосовой фильтрации.
4. Загрузите файл eegX.txt, где X – номер Вашего варианта. Частота дискретизации ЭЭГ сигнала составляет 250 Гц. Сформируйте эталонный образец комплекса спайк-волна.
5. Используя метод корреляционной обработки сигналов реализуйте обнаружение комплексов спайк-волна в исходном ЭЭГ сигнале.
СОДЕРЖАНИЕ ОТЧЁТА
1. Цель работы.
2. Листинги написанных программ (M-файлов) в среде MATLAB для каждого задания.
3. Сводная таблица результатов, содержащая полученные в результате проведённых исследований графики зависимостей изменения фрагментов биосигналов от времени до и после фильтрации.
4. Выводы о полученных результатах, сопоставление с теорией.
Лабораторная работа № 4. Оптимальная фильтрация
биомедицинских сигналов: фильтр Винера
Рассмотренные ранее фильтры оперируют ограниченной информацией о временных и/или спектральных характеристиках сигнала и помехи. Данный способ фильтрации можно рассматривать как эмпирически подобранный, при этом получаемый результат не является гарантированно лучшим, иными словами не является оптимальным с точки зрения максимизации соотношения сигнал/шум на выходе используемого фильтра.
Теория фильтров Винера позволяет разработать оптимальный фильтр для устранения помех и шумов из сигнала при условии, что сигнал и шум являются независимыми стационарными случайными процессами, при этом известны характеристики неискажённого сигнала и характеристики присутствующих шумов и помех. Параметры Винеровского фильтра оптимизированы с использованием некого критерия эффективности, при этом обеспечивается наилучший достижимый результат при данных условиях и при данной доступной информации о характеристиках фильтруемого сигнала и присутствующих помех и шумов.
При решении задач фильтрации биомедицинских сигналов фильтр Винера можно представить в виде КИХ фильтра с одним входом и одним выходом с вещественными коэффициентами. На рисунке 1 приведена обобщённая структурная схема оптимального фильтра Винера с коэффициентами wi, i=0, 1, 2,…, M–1, входом x(n) и выходом d*(n).
Рисунок 1 – Структурная схема фильтра Винера
Выходной сигнал фильтра d*(n) рассматривается как оценка сигнала d(n), представляющего собой идеальный неискажённый сигнал. Если известен и доступен сигнал d(n), то можно рассчитать оценку ошибки между выходом и требуемым сигналов как:
e(n)=d(n)–d*(n)
В силу того, что оценка d*(n) является выходом линейного КИХ фильтра, она может быть выражена как свёртка входного сигнала x(n) с последовательностью весов wi, являющейся импульсной характеристикой фильтра, следующим образом:
Последовательность весовых коэффициентов фильтра может быть описана как вектор размерностью M×1:
w=[w0, w1, w2,…, wM–1]T
Вектор отсчётов входного сигнала можно представить в следующем виде:
x(n)=[x(n), x(n–1),…, x(n–M+1)]T
В этом случае свёртка входного сигнала и импульсной характеристики фильтра может быть представлена как скалярное произведение векторов:
d*(n)=wT∙x(n)=x(n)T∙w
Ошибка оценки определяется выражением:
e(n)=d(n)–wT∙x(n)
Фильтр Винера оценивает последовательность весовых коэффициентов, которые минимизируют среднеквадратичную величину ошибки оценки, в этом случае выходной сигнал фильтра является оценкой минимальной среднеквадратичной ошибки требуемого отклика, фильтр в этом случае является оптимальным фильтром.
Частотная характеристика фильтра Винера может быть описана следующим выражением (с подробным математическим выводом можно самостоятельно ознакомиться в [2]):
где: S(ω) – частотная характеристика Винеровского фильтра, Sxd(ω) – взаимная спектральная плотность мощности между входным сигналом x(n) и требуемым сигналом d(n), Sxx(ω) – спектральная плотность мощности входного сигнала x(n).
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
1. Загрузите файл ecgX.txt, где X – номер Вашего варианта. Частота дискретизации ЭКГ сигнала составляет 500 Гц. Сформируйте требуемую кусочно-аналитическую модель одного кардиоцикла ЭКГ сигнала.
2. Используя метод оптимальной фильтрации сигналов на основе разработки фильтра Винера проведите цифровую фильтрацию зашумлённого ЭКГ сигнала с использованием модельного ЭКГ сигнала.
3. Сравните эффективность обработки ЭКГ сигнала на основе методов Винеровской фильтрации с аналогичными результатами, полученными с использованием согласованной фильтрации, фильтрации во временной области и частотной полосовой фильтрации.
4. Постройте АЧХ разработанного фильтра Винера для обработки ЭКГ сигналов.
СОДЕРЖАНИЕ ОТЧЁТА
1. Цель работы.
2. Листинги написанных программ (M-файлов) в среде MATLAB для каждого задания.
3. Сводная таблица результатов, содержащая полученные в результате проведённых исследований графики зависимостей изменения фрагментов биосигналов от времени до и после фильтрации.
4. Выводы о полученных результатах, сопоставление с теорией.
Лабораторная работа № 5. Адаптивная фильтрация
биомедицинских сигналов
Рассмотренные ранее виды фильтрации, основанные на использовании цифровых фильтров с постоянными параметрами, хорошо подходят для случаев, когда характеристики сигналов и помех являются стационарными и известными. Однако фильтры такого вида не применимы в тех случаях, когда характеристики сигнала или шума изменяются во времени (при этом необходимо заметить, что большинство биомедицинских сигналов являются по своей природе нестационарными процессами), а также в тех случаях, когда спектральный состав сигнала и помех существенно перекрываются. Примером таких ситуаций может служить искажение относительно низкочастотных биосигналов (например, сигнал артериальной пульсации крови) двигательными артефактами, одновременное присутствие при регистрации двух сигналов со схожими спектральными характеристиками биоэлектрической активности сердца матери и плода. Использование фильтров с постоянными характеристиками не позволит эффективно разделить сигнал от помехи.
Для решения задачи необходимо разработать фильтр, параметры которого будут адаптироваться к изменяющимся характеристикам сигнала и помехи. При этом должен быть доступен канал регистрации сигнала информации, связанной с помехой. Например, в случае фильтрации биосигнала в условиях присутствия двигательных артефактов в качестве дополнительного канала регистрации информации, связанной с помехой, может использоваться акселерометр или датчик перемещения. Таким образом, к разрабатываемому фильтру предъявляются два требования: он должен быть адаптивным и оптимальным.
На рисунке 1 приведена обобщённая структурная схема адаптивного фильтра, реализующего процедуру адаптивного подавления шумов (АПШ).
Рисунок 1 – Структурная схема адаптивного фильтра
Основной вход фильтра представляет собой смесь полезного сигнала v(n) и присутствующей искажающей помехи на основном входе m(n):
x(n)=v(n)+m(n)
Требуется оценить помеху или шум m(n) и устранить ее из x(n)для получения полезного сигнала v(n). Предполагается, что v(n)и m(n) некоррелированы. Для адаптивной фильтрации необходим второй вход, известный как опорный вход r(n), который не коррелирован с полезным сигналом v(n), но тесно связан или коррелирован с помехой или шумом m(n) каким-либо способом, знать который нет необходимости.
Процедура АПШ модифицирует или фильтрует сигнал на опорном входе r(n) таким образом, чтобы получить некоторый сигнал y(n), который настолько близок к шуму m(n), насколько это возможно. Далее сигнал y(n) вычитается из сигнала на основном входе для получения оценки требуемого полезного сигнала v*(n):
v*(n)=e(n)=x(n)–y(n)
Основной целью использования процедуры АПШ является получение такого выходного сигнала e(n), который близок по критерию наименьших квадратов к полезному сигналу v(n), что достигается подачей выходного сигнала на адаптивный фильтр в качестве обратной связи и настройкой фильтра для минимизации общей выходной мощности системы. Выходной сигнал системы используется в качестве сигнала ошибки для адаптивного процесса. Минимизация общей выходной мощности максимизирует отношение сигнал/шум на выходе фильтра.
Выходной сигнал адаптивного фильтра y(n) в ответ на входной сигнал r(n) определяется разностным уравнением:
Ошибка оценки или выходной сигнал системы АПШ определяется как:
e(n)=x(n)–wT∙r(n)
В качестве методов максимизации соотношения сигнал/шум на выходе наиболее часто используются метод наименьших средних квадратов или рекурсивный метод наименьших квадратов. Целью алгоритмов оптимизации является адаптивная настройка вектора весовых коэффициентов фильтра для минимизации среднеквадратичной ошибки выходного сигнала системы АПШ e(n). Более подробную информацию об указанных алгоритмах для самостоятельного изучения можно найти в [2].
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
1. Загрузите файл ppgX.txt, где X – номер Вашего варианта. Частота дискретизации сигнала пульсовой волны составляет 100 Гц. Проведите предварительную обработку сигнала пульсовой волны на основе методов полосовой частотной фильтрации с целью улучшения соотношения сигнал/шум.
2. Загрузите сигнал движения человека motionX.txt, где X – номер Вашего варианта. Сигнал движения зарегистрирован с помощью трёхосевого акселерометра синхронно с сигналом пульсовой волны. Частота дискретизации сигнала движения составляет 100 Гц. Проведите предварительную обработку сигнала пульсовой волны на основе низкочастотной фильтрации с целью улучшения соотношения сигнал/шум.
3. На основе подходов адаптивного подавления шумов обработайте искажённый двигательными артефактами сигнал пульсовой волны, используя информацию о двигательной активности человека в данный момент времени.
4. Используйте различные алгоритмы определения коэффициентов адаптивного фильтра с целью получения наилучших результатов обработки зашумлённого сигнала пульсовой волны.
5. Разработайте фильтр скользящего среднего для подавления двигательных артефактов сигнала пульсовой волны. Добейтесь оптимальной величины скользящего окна для получения оптимальных результатов обработки зашумлённого сигнала.
6. Сравните результаты обработки сигнала пульсовой волны с использованием адаптивной фильтрации с результатами, полученными на основе полосовой частотной фильтрации и фильтрации скользящего среднего.
СОДЕРЖАНИЕ ОТЧЁТА
1. Цель работы.
2. Листинги написанных программ (M-файлов) в среде MATLAB для каждого задания.
3. Сводная таблица результатов, содержащая полученные в результате проведённых исследований графики зависимостей изменения фрагментов биосигналов от времени до и после фильтрации.
4. Выводы о полученных результатах, сопоставление с теорией.
Лабораторная работа № 6. Кратномасштабный вейвлет-анализ биомедицинских сигналов
Двигательные артефакты, присутствующие при регистрации большинства биосигналов, биоэлектрическая активность периферических мышц при регистрации ЭКГ сигнала, дрейф изолинии биосигналов являются случайными помехами и имеют, как правило, широкополосный спектр. Обработка биосигналов на фоне присутствия данного вида искажений сталкивается с рядом алгоритмических трудностей, заключающихся в том, что природа появления помех имеет случайный характер, а их частотные компоненты перекрываются с основной полосой частот полезных биосигналов, что затрудняет использование классических методов линейной частотной фильтрации.
В настоящее время перспективным направлением в области обработки биосигналов, искажённых широкополосными шумами и помехами, является фильтрация на основе использования кратномасштабных вейвлет-разложений. Очистка сигналов от шума может быть реализована непосредственно удалением детализирующих коэффициентов высокочастотных уровней вейвлет разложений.
Кратномасштабное вейвлет-разложение включает в себя стадии декомпозиции и композиции (реконструкции) сигнала и основано на выполнении дискретного вейвлет-преобразования сигнала. На рисунке 1 приведена блок-схема кратномасштабного вейвлет-разложения сигнала с использованием алгоритма Малла, на схеме приведено двухуровневое разложение (ai[k] – аппроксимирующие коэффициенты, di[k] – детализирующие коэффициенты). К основным операциям алгоритма Малла относятся интерполяция, децимация, а также фильтрация с использованием различных банков фильтров.
Операция интерполяции с фактором 2 осуществляется путём увеличения в два раза числа отсчётов сигнала путём добавлением нулевых компонент. Операция децимации является обратной процедуре интерполяции и заключается в уменьшении количества отсчётов биосигнала в количество раз, определяемое фактором децимации.
Рисунок 1 – Блок схема кратномасштабного вейвлет-разложения
На первом этапе обработки осуществляется декомпозиция исходного сигнала, эта процедура использует операции децимации и фильтрации фильтрами разложения LoD и HiD. Фильтры разложения LoD являются низкочастотными фильтрами, на выходе которых формируются аппроксимирующие коэффициенты разложения, фильтры HiD являются высокочастотными фильтрами на их выходе формируются последовательности детализирующих коэффициентов. На следующем этапе итерации последовательность полученных аппроксимирующих коэффициентов вновь подвергается аналогичной процедуре разложения. При этом на каждом этапе декомпозиции частота дискретизации сигнала уменьшается в 2 раза из-за использования операции децимации.
Вторая часть алгоритма представляет собой композицию сигнала и включает в себя операции интерполяции и фильтрации фильтрами реконструкции LoR и HiR.
При сложении сигналов, полученных на выходе фильтров реконструкции LoR и HiR, получаем сигнал , близкий к исходному сигналу fk, то есть происходит реконструкция на начальном уровне. Таким образом, сигнал f(t) можно представить в следующем виде:
где: Aj0(t) – аппроксимирующая составляющая сигнала, Dj(t) – детализирующая составляющая сигнала, j0 – уровень анализа (декомпозиции) и синтеза (реконструкции) сигнала.
Основу методики фильтрации биосигналов на основе кратномасштабного вейвлет-разложения составляет использование различных пороговых алгоритмов, на основе которых происходит ограничение уровня детализирующих коэффициентов, что приводит к снижению уровня присутствующих в сигнале шумов.
Согласно теории вейвлет-преобразований, низкочастотные (аппроксимирующие) коэффициенты вейвлет разложения обладают большей энергией сигнала, что делает их более важными для использования на стадии реконструкции. Высокочастотные (детализирующие) коэффициенты вейвлет-разложения обладают меньшей энергией сигнала, и зачастую представляют собой шумовые компоненты исходного сигнала. Таким образом, в задачах фильтрации сигнала представляется целесообразным отбросить детализирующие коэффициенты вейвлет-разложения, получаемые на ранних стадиях декомпозиции сигнала.
С целью эффективной реализации цифровой фильтрации биосигналов в условиях присутствия широкополосных стохастических помех может быть предложена методика на основе использования разложения биосигнала по ортогональным вейвлетам и включает в себя следующие этапы:
1. Вычисление прямого вейвлет-преобразования сигнала (выбор типа вейвлет-функции и числа уровней вейвлет-разложения); тип вейвлета и порядок разложения может существенно влиять на качество фильтрации биосигнала как в зависимости от формы самого сигнала, так и от корреляционных характеристик присутствующих шумов;
2. Задание типа и пороговых уровней фильтрации сигнала по известным априорным данным о характере шумов или по определённым критериям присутствующих шумов в исходном сигнале (выбор алгоритма нахождения порогового значения, выбор пороговой функции, выбор стратегии обработки детализирующих коэффициентов вейвлет-разложения);
3. Модификация коэффициентов детализации вейвлет-разложения в соответствии с установленными условиями фильтрации;
4. Восстановление исходного биосигнала на основе исходных коэффициентов аппроксимации и модифицированных детализирующих коэффициентов с помощью обратного вейвлет-преобразования.
Выбор оптимального значения глубины разложения и используемой при фильтрации вейвлет-функции во многом определяется морфологией биосигналов и характером присутствующих искажений.
Оптимальное значение уровня разложения определяется частотным спектром информационной составляющей обрабатываемого биосигнала, которую необходимо сохранить в массиве аппроксимационных коэффициентов. Для практической реализации данного метода фильтрации может использоваться система компьютерных вычислений MATLAB с установленным пакетом расширений Wavelet Toolbox.
При выборе порогового уровня фильтрации шумовых компонент биосигналов могут использоваться различные критерии, минимизирующие квадратичную функцию потерь для выбранной модели шума. В системе MATLAB используются следующие алгоритмы нахождения оптимального порогового значения для ограничения детализирующих коэффициентов вейвлет-разложения:
1) адаптивный порог на основе алгоритма Штейна несмещённой оценки;
2) эвристический порог по методу Штейна;
3) фиксированное значение порога, определяемое как: , где: σ – среднеквадратическое отклонение шума, оцениваемое для последовательности детализирующих коэффициентов, M – общее количество отсчётов фильтруемого биосигнала;
4) порог, определяемый с помощью минимаксной оценки.
В современных алгоритмах вейвлет-фильтрации широкополосных случайных компонент, присутствующих в информационных сигналах, используется два типа пороговых функций. Различают жёсткую пороговую функцию (выражение 1) и мягкую пороговую функцию (выражение 2):
(1)
(2)
где: x – входное значение детализирующих коэффициентов, y – выходное значение детализирующих коэффициентов, sign(x) – функция определения знака числа x, T – значение порога.
Последние исследования в области цифровой обработки биосигналов показывают, что применение вейвлет-фильтрации является эффективным и перспективным методом подавления присутствующих широкополосных случайных помех различной природы возникновения, позволяющим обеспечить малые искажения биосигналов.
Реализация кратномасштабного вейвлет-анализа сигналов
в среде MATLAB
Для реализации методики фильтрации сигнала на основе кратномасштабных вейвлет-преобразований в системе MATLAB используется функция wden, которая имеет следующий синтаксис:
[SD, CSD, LSD] = wden(S, TPTR, SORH, SCAL, N, 'wname')
где: SD – восстановленный сигнал; CSD – вектор, содержащий коэффициенты вейвлет-разложения сигнала; LSD – вектор, содержащий длины векторов вейвлет-коэффициентов, полученных на различных уровнях разложения; S – обрабатываемый сигнал; TPTR – алгоритм, используемый для выбора порога; SORH – параметр, отвечающий за выбор пороговой функции; SCAL – параметр определяющий характер обработки детализирующих коэффициентов вейвлет-разложения; N – число уровней вейвлет-разложения; 'wname' – тип функции, применяемый для вычисления вейвлет-коэффициентов.
Параметр TPTR может принимать следующие значения:
'rigrsure' – алгоритм Штейна несмещённой оценки риска
'heursure' – эвристический вариант предыдущего алгоритма
'sqtwolog' – универсальный порог
'minimaxi' – минимаксный порог
Параметр TPTR может принимать следующие значения:
'h' – жёсткая пороговая функция
's' – мягкая пороговая функция
Параметр SCAL может принимать следующие значения:
'one' – обработка детализирующих коэффициентов на всех уровнях вейвлет-разложения одинакова. При этом пороговое значение выбирается без автоматического оценивания дисперсии шума.
'sln' – обработка детализирующих коэффициентов на всех уровнях вейвлет-разложения одинакова. При этом пороговое значение выбирается с автоматическим оцениванием дисперсии шума на первом уровне разложения.
'mln' – обработка детализирующих коэффициентов на всех уровнях вейвлет-разложения различна. При этом пороговое значение выбирается с автоматическим оцениванием дисперсии шума на каждом уровне разложения и является индивидуальным для детализирующих коэффициентов, находящихся на этом уровне разложения.
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
1. Загрузите файл ecgX.txt, где X – номер Вашего варианта. Частота дискретизации ЭКГ сигнала составляет 500 Гц. Используя методы полосовой частотной фильтрации добейтесь уменьшения интенсивности присутствующих помех и искажений.
2. Используя методику фильтрации сигналов на основе кратномасштабных вейвлет-разложений добейтесь фильтрации зашумлённого ЭКГ сигнала. Обеспечьте выбор наиболее оптимальных параметров обработки ЭКГ сигнала с целью максимизации соотношения сигнал/шум.
3. Сравните результаты обработки ЭКГ сигнала с использованием кратномасштабных вейвлет-разложений с результатами, полученными на основе полосовой частотной фильтрации.
4. Загрузите файл ppgX.txt, где X – номер Вашего варианта. Частота дискретизации сигнала пульсовой волны составляет 100 Гц. Проведите предварительную обработку сигнала пульсовой волны на основе полосовой частотной фильтрации с целью улучшения соотношения сигнал/шум.
5. Используя методику фильтрации сигналов на основе кратномасштабных вейвлет-разложений добейтесь фильтрации зашумлённого сигнала пульсовой волны. Обеспечьте выбор наиболее оптимальных параметров обработки сигнала пульсовой волны с целью максимизации соотношения сигнал/шум.
6. Сравните результаты обработки сигнала пульсовой волны на основе кратномасштабных вейвлет-разложений с результатами полосовой частотной фильтрации и фильтрации скользящего среднего.
7. Сравните выбранные оптимальные параметры фильтрации ЭКГ сигнала на основе кратномасштабных вейвлет-разложений с параметрами обработки сигнала пульсовой волны на основе кратномасштабных вейвлет-разложений.
СОДЕРЖАНИЕ ОТЧЁТА
1. Цель работы.
2. Листинги написанных программ (M-файлов) в среде MATLAB для каждого задания.
3. Сводная таблица результатов, содержащая полученные в результате проведённых исследований графики зависимостей изменения фрагментов биосигналов от времени до и после фильтрации.
4. Выводы о полученных результатах, сопоставление с теорией.
Практическое занятие № 3. Основные сведения о методах
обнаружения характерных точек биомедицинских сигналов
Биомедицинские сигналы содержат информацию о физиологических событиях. Фрагмент сигнала, связанный с каким-либо изучаемым событием, часто называют эпохой. Анализ биосигналов для мониторного наблюдения или диагностики требует идентификации эпох и исследование соответствующих событий. После идентификации физиологических событий осуществляется сегментация и анализ соответствующего фрагмента сигнала с использованием таких характеристик, как амплитуда, форма сигнала (морфологические признаки), длительность, интервалы между идентичными событиями, распределение энергии, спектральный состав и т.д. Таким образом, обнаружение событий является одним из наиболее важных этапов в анализе биомедицинских сигналов.
Для примера рассмотрим методы обнаружения событий, связанных с сократительной работой сердечной мышцы, на основе анализа биосигналов, содержащих информацию о параметрах сердечного ритма. К такому роду биосигналов в клинической практике относятся сигнал биоэлектрической активности сердца (ЭКГ сигнал) и сигнал периферических артериальных пульсаций крови.
Для ЭКГ сигнала наиболее выраженной характерной точкой является R-зубец, определяющий наивысшую степень биоэлектрической активности миокарда во время фазы деполяризации желудочков. Для сигнала периферической артериальной пульсации крови характерной точкой, характеризующей наступление момента сокращения сердечной мышцы, является систолический максимум – точка, соответствующая уровню максимального артериального давления (систолическое давление).
Зачастую выбор характерной точки продиктован необходимостью обеспечения наилучшего детектирования фрагмента биосигнала, в связи с этим характерная точка может не соответствовать моменту наступления физиологического события. Например, в качестве так называемых опорных точек биосигналов, определяемых для дальнейшего обнаружения характерной точек, часто выбирают точку максимума первой производной биосигнала.
Как правило, схема обнаружения характерных точек биомедицинских сигналов формирует выходной импульсный сигнал, положение максимума или фронта которого соответствует положению опорной точки во времени. Процессу обнаружения характерных точек часто предшествует их выделение на фоне помех и шумов. В качестве опорных точек биосигналов выбираются наиболее различимые на фоне помех и шумов. Основным требованием, предъявляемым к средствам обнаружения характерных точек, является возможность эффективной работы в условиях помех высокой интенсивности и изменчивости формы биомедицинских сигналов.
В общем случае схема обнаружения характерной точки биомедицинских сигналов включает в себя последовательно соединённые блок предварительной обработки и пороговый детектор.
Первичная обработка биосигналов представляет собой различные этапы цифровой фильтрации для устранения шумов и помех, а также набор амплитудно-временных преобразований исходного биосигнала в форму наиболее пригодную для последующего анализа пороговым устройством.
На стадии предварительной обработки биосигналов наиболее часто используются:
• методы частотной фильтрации;
• фильтрация во временной области,
• методы, основанные на первой производной и нелинейных преобразованиях.
Реже применяются методы, основанные на корреляционной обработке, применении вейвлет-преобразований и использовании нейронных сетей.
Применение полосовой частотной фильтрации на этапе предварительной обработки биомедицинских сигналов позволяет уменьшить влияние различного рода помех, как физического, так и биологического происхождения.
Основными видами помех физического происхождения являются помехи электрической природы, обусловленные воздействием электрических сетей питания, шумами аналоговых элементов измерительного преобразователя биомедицинских сигналов, шумами квантования аналого-цифрового преобразования биосигналов. К артефактам физиологического происхождения, как правило, относятся помехи, обусловленные дыханием или движениями обследуемого во время регистрации биосигналов, а также любую активность систем организма, не связанную с регистрируемым процессом, но оказывающую влияние на определяемые значения диагностических показателей.
Наиболее ярким примером таких процессов может служить миографическая активность периферических мышц при регистрации ЭКГ сигнала. Дыхательные тренды, присутствующие в сигнале артериальной пульсации крови, искажают изолинию и форму биосигнала. Двигательные артефакты носят случайный характер и приводят к наибольшим искажениям биосигнала. Обработка сигнала артериальной пульсации крови на фоне присутствия двигательных артефактов сталкивается с рядом трудностей, заключающихся в том, что природа появления двигательных артефактов имеет случайный характер, а их частотные компоненты перекрываются с основной полосой частот сигнала артериальной пульсации крови.
В основе принципа линейной частотной фильтрации лежит различие в спектральных характеристиках биосигналов и различного вида помех.
Наличие низкочастотных помех, обусловленных дыханием человека во время регистрации биосигналов, обуславливает необходимость предварительной фильтрации биосигналов цифровыми фильтрами верхних частот (ФВЧ). Дыхательные тренды, присутствующие в большинстве биомедицинских сигналов, искажают изолинию и форму сигнала, что может приводить к неточностям в определении временного положения характерных точек. В силу того, что максимальная частота дыхания человека не может превышать 0,5 Гц, то одним из способов борьбы с дыхательными помехами является применение цифровой фильтрации с помощью фильтров верхних частот с частотой среза не более 0,5 Гц.
Применение фильтров нижней частоты (ФНЧ) позволяет уменьшить или полностью исключить влияние помех от электрической сети, с основной частотой 50 Гц. Для относительно высокочастотных биосигналов (ЭКГ, ЭМГ сигналы) применения ФНЧ с частотой среза менее 50 Гц может привести к значительному искажению за счёт избыточного сглаживанию биосигнала, поэтому в таком случае наиболее целесообразным является режекторная фильтрация, при которой частота среза фильтра точно настраивается на частоту присутствующей в биосигнале помехи электрического происхождения.
Ряд схем обнаружения характерных точек биосигналов содержат в себе этапы дифференцирования сигнала. Известно, что дифференцирование сигналов приводит к усилению содержащихся в них высокочастотных шумов и помех, которые могут быть обусловлены шумами квантования, а также помехами от электрической сети питания. Таким образом, на предварительной стадии обработки сигналов необходимо подавление такого рода помех с помощью цифровых фильтров нижних частот (ФНЧ). Последовательно соединённые ФВЧ и ФНЧ образуют полосовой фильтр, частоты среза которого зависят от частотных характеристик исследуемых биосигналов. Применение методов частотной полосовой на начальном этапе предварительной обработки биосигналов обеспечивает снижение погрешностей детектирования характерных точек.
В качестве цифровых фильтров для предварительной обработки биосигналов наиболее целесообразно использовать фильтр Баттерворта, к преимуществам которого можно отнести максимально плоскую частотную характеристику в полосе пропускания и невысокие требования к вычислительной мощности, что позволяет разработать фильтр высокого порядка, что в свою очередь обеспечивает достаточную крутизну спектральной характеристики.
Для реализации фильтрации во временной области часто используют фильтр скользящего среднего:
где: x(n) – входной сигнал, N – ширина скользящего окна, y(n) – выходной сигнал.
Применение фильтра скользящего среднего приводит к сглаживанию исходного сигнала, и обычно, используется для устранения ошибок квантования и для устранения высокочастотных шумов в сигнале. Свойства такого рода фильтров полностью определяются шириной окна N.
Фильтр скользящего среднего также находит применение для преобразования рассматриваемого биосигнала в более простой сигнал, максимально подходящий для детектирования пороговым устройством. Фильтр скользящего среднего успешно используется для преобразования сигнала артериальной пульсации крови в квазигармонический сигнал, максимумы которого соответствуют временному положению систолического пика с задержкой равной ширине окна N. Исследования эффективности использования фильтрации скользящего среднего в задачах обнаружения характерных точек сигнала артериальной пульсации крови показали, что максимальная эффективность преобразования сигнала достигается при ширине окна равной ¼ части от частоты дискретизации биосигнала.
Применение оператора первой производной к биосигналам позволяет выделить “среднюю” точку переднего фронта сигнала. Как правило, методы, основанные на первой производной, сочетаются с комбинацией различных нелинейных преобразований, после применение оператора первой производной, результат возводится в квадрат, что позволяет улучшить соотношение сигнал/шум и упростить последующий поиск максимумов пороговым устройством в обработанном сигнале.
Пороговые устройства выделяют из обработанного сигнала опорные точки исходного биосигнала. Наибольшее распространение получили адаптивные пороговые детекторы, у которых абсолютное значение порога зависит от амплитуды входного сигнала, благодаря чему происходит адаптация к нестационарному характеру биосигналов. В частности, в значение порога адаптивно определяется как доля от среднего значения амплитуд двух предыдущих обнаруженных пиков.
Существуют методы детектирования характерной точки с помощью скользящего окна фиксированной длительности, в течение которого происходит обнаружение характерной точки с помощью пороговой схемы, при этом значение порога обычно устанавливается как доля от максимального значения сигнала в данном окне. Длительность скользящего окна выбирается таким образом, чтобы в течение этого времени в сигнале присутствовала, как минимум одна эпоха физиологического события, например, для биосигналов сердечного ритма ширина окна определяется минимально возможной частотой пульса и обычно составляет 1500 – 2000 мс. В качестве порога также используются квантильные оценки на основе непараметрических описательных статистик.
Существуют также дополнительные алгоритмы пороговых устройств обнаружения опорных точек биосигналов, использующие априорную информацию о временных характеристиках исследуемых физиологических процессов. Например, при обработке биосигналов сердечного ритма можно использовать информацию об априорно известных частотных характеристиках сердечного ритма, в частности, наличие рефрактерного периода сократимости сердечной мышцы.
После успешного обнаружения опорной точки биосигнала сердечного ритма, устанавливается период релаксации, в течение которого детектирование следующей опорной точки не осуществляется. Длительность периода релаксации определяется максимально возможной частотой пульса человека и составляет, как правило, 250–300 мс.
С целью повышения эффективности обнаружения характерных точек биосигналов могут применяться специальные методы коррекции, позволяющие исключать ложно обнаруженные характерные точки. Наиболее простой реализацией такого метода коррекции является исключение характерных точек, имеющих аномальные амплитудно-временные характеристики. Например, пропуск очередной характерной точки биосигналов сердечного ритма приводит к появлению аномального значения длительности текущего сердечного цикла, которое необходимо будет исключить из дальнейшего анализа.
Одним из вариантов построения порогового устройства обнаружения характерной точки биосигналов является одновременная регистрация и совместная обработка двух или более биосигналов, что позволяет увеличить достоверность результатов детектирования физиологических событий. Например, в диагностических системах анализа сердечного ритма синхронная регистрация ЭКГ сигнала и сигнала артериальной пульсации, с последующим определением временного положения характерной точки сигнала артериальной пульсации относительно положения соответствующего R-зубца ЭКГ сигнала.
Данный метод основан на использовании априорной информации о существовании доверительного временного интервала относительно положения соответствующего R-зубца ЭКГ сигнала, в пределах которого находится характерная точка сигнала артериальной пульсации. На основе имеющихся физиологических данных, а также эмпирических исследований взаимного расположения различных характерных точек сигнала артериальной пульсации и R-зубца ЭКГ сигнала можно предложить доверительный интервал, относительно временного положения R-зубца ЭКГ сигнала, в котором с вероятностью близкой к 1 будет находиться характерная точка сигнала артериальной пульсации. Преимуществом данного способа построения схемы обнаружения является высокая точность и эффективность детектирования при малой вероятности ложного обнаружения характерной точки сигнала артериальной пульсации крови.
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Обнаружение физиологических событий в биомедицинских сигналах.
2. Общее структурное построение схем обнаружения опорных точек биосигналов.
3. Методы предварительной обработки биосигналов с целью обнаружения опорных точек сигнала.
4. Методы построения пороговых обнаружителей опорных точек биомедицинских сигналов.
5. Основные источники погрешностей обнаружения опорных точек биомедицинских сигналов.
Лабораторная работа № 7. Обнаружение QRS-комплексов
ЭКГ сигнала
В настоящее было проведено достаточно большое количество исследований, посвящённых построению эффективных схем обнаружения QRS-комплексов сигнала биоэлектрической активности сердца. С целью обеспечения эффективного обнаружения R-зубца было разработано множество различных алгоритмов, основанных на применении первой и второй производной, методов цифровой фильтрации, применении вейвлет-преобразований, согласованных фильтров и нейронных сетей. Одним из наиболее эффективных методов обнаружения QRS-комплексов является метод Пана-Томпкинса [2].
В данной работе предлагается рассмотреть упрощённый вариант построения обнаружителя QRS-комплексов ЭКГ сигнала, на основе модифицированного метода Пана-Томпкинса, включающего в себя стадии полосовой фильтрации, предварительной обработки и последующего сглаживании сигнала биоэлектрической активности сердца с помощью фильтра скользящего среднего.
На рисунке 1 изображена структурная схема обнаружителя R-зубцов сигнала биоэлектрической активности сердца (1 – блок полосовой фильтрации, 2 – блок нелинейной обработки, 3 – фильтр скользящего среднего, 4 – блок формирования скользящего окна, 5 – блок формирования порогового уровня, 6 – пороговое устройство, 7 – детектор максимума).
Рисунок 1 – Структурная схема обнаружителя QRS-комплексов
ЭКГ сигнала
Полосовая фильтрация сигнала биоэлектрической активности сердца позволяет улучшить соотношение сигнал/шум и повысить достоверность обнаружения QRS-комплексов. Оптимальной полосой пропускания для полосового фильтра при цифровой обработке сигнала биоэлектрической активности сердца в системах мониторной диагностики состояния сердечно-сосудистой системы на основе определения параметров сердечного ритма является полоса 2 – 20 Гц. В качестве полосового фильтра наиболее целесообразно использовать фильтр Баттерворта высокого порядка (8-12), к преимуществам фильтров данного типа относится плоская частотная характеристика в полосе пропускания и невысокие требования к вычислительной мощности, а к недостаткам – нелинейная фазовая характеристика и невысокая крутизна частотной характеристики.
Первый недостаток компенсируется на стадии разработки фильтра: сигнал после прохождения фильтра пропускается через него повторно, но в обратном по времени направлении. Второй недостаток нивелируется выбором порядка фильтра, как правило, фильтры Баттерворта 8-12 порядка обладают достаточной крутизной частотной характеристики, что позволяет эффективно подавлять сигнал помехи и не искажать характеристики полезного сигнала.
Сигнал после применения процедур нелинейной обработки определяется следующим образом:
где: x(k) – сигнала биоэлектрической активности сердца после прохождения полосового фильтра, N – ширина окна, g(k) – сигнал на выходе блока 2.
На стадии нелинейной обработки происходит подавление низкочастотных компонентов сигнала биоэлектрической активности сердца, обеспечивается достаточный коэффициент усиления для высокочастотных компонент, появляющихся из-за крутых склонов QRS-комплекса. Операция возведения в квадрат делает результат положительным и дополнительно усиливает большие разности, возникающие из-за QRS-комплекса, а меньшие разности, обусловленные низкочастотными компонентами сигнала биоэлектрической активности сердца, подавляются.
Дальнейшее сглаживание сигнала выполняется с использование фильтра скользящего среднего по M точкам:
Рисунок 2 – Зависимости изменения сигнала от времени на различных
этапах работы обнаружителя R-зубца (1 – исходный ЭКГ сигнал, 2 – сигнал после обработки полосовым фильтром, 3 – сигнал после процедур
нелинейной обработки, 4 – сигнал после сглаживания)
Выбор ширины окон N и M определяется частотой дискретизации и влияет на величину задержки выходного сигнала относительно исходного сигнала биоэлектрической активности сердца. При выборе слишком большой ширины окна выходные сигналы, связанные с QRS-комплексом и низкочастотными компонентами сигнала биоэлектрической активности сердца будут сливаться, в то время как слишком маленькая ширина окна приведёт к появлению нескольких максимумов для единственного QRS-комплекса, что ухудшит эффективность детектирования пороговым устройством.
На рисунке 2 приведены зависимости изменения сигнала биоэлектрической активности сердца от времени на различных этапах работы обнаружителя QRS-комплексов.
На последующих этапах происходит определение временного положения максимумов сигнала Y. Для этого целесообразно использовать адаптивные алгоритмы поиска, в частности, с использованием скользящего окна, в пределах которого формируется величина адаптивного порога. На выход порогового устройства проходят только те отсчёты, амплитуда которых превышает величину порога.
Максимум сигнала Y далее фиксируется детектором максимума на основе трёхточечной схемы обнаружения при одновременном выполнении следующих условий:
Y(k)>Y(k+1) & Y(k)>Y(k-1)
В случае выполнения указанных условий номер отсчёта k определяет временное положение QRS-комплекса с учётом внесённой временной задержки операциями предварительной обработки ЭКГ сигнала.
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
1. Загрузите файл ecgX.txt, где X – номер Вашего варианта. Частота дискретизации ЭКГ сигнала составляет 500 Гц.
2. Реализуйте описанный выше алгоритм детектирования QRS-комплексов ЭКГ сигнала. Разработайте собственный адаптивный алгоритм поиска максимумов на основе критерия минимизации ошибок ложного обнаружения и ложного пропуска QRS-комплексов.
3. Реализуйте классический вариант построения обнаружителя QRS-комплексов на сове метода Пана-Томпкинса.
4. Сравните полученные результаты в пп 2 и 3.
5. Реализуйте методику обнаружений QRS-комплексов ЭКГ сигнала на основе применения корреляционного фильтра.
6. Сравните полученные результаты в пп 2, 3 и 5.
СОДЕРЖАНИЕ ОТЧЁТА
1. Цель работы.
2. Листинги написанных программ (M-файлов) в среде MATLAB для каждого задания.
3. Сводная таблица результатов, содержащая полученные в результате проведённых исследований графики зависимостей изменения фрагментов биосигналов на каждом этапе обработки.
4. Выводы о полученных результатах, сопоставление с теорией.
Лабораторная работа № 8. Обнаружение систолического
максимума пульсовой волны
Для обеспечения эффективного детектирования систолического максимума пульсовой волны предлагается рассмотреть следующий амплитудно-временной обнаружитель. На стадии предварительной обработки сигнала пульсовой волны применяются операции дифференцирования и нелинейного преобразования сигнала. В данном амплитудно-временном обнаружителе в качестве опорной точки, относительно которой будет определяться положение систолического максимума, предложено использовать максимум первой производной сигнала пульсовой волны.
Обнаружение максимума первой производной сигнала происходит на основе трёхточечной схемы детектирования на интервале поиска, формируемого временным положением соответствующего R-зубца сигнала биоэлектрической активности сердца. Границы интервала поиска определяются на основе априорных физиологических данных о взаимоположении соответствующих биосигналов, что обеспечивает высокую эффективность детектирования. В том случае, если одновременная регистрация ЭКГ сигнала невозможна или при обработке сигнала пульсовой волны отсутствует информация о временном положении соответствующих R-зубцов ЭКГ сигнала, то в качестве схемы порогового детектирования можно использовать адаптивную схему, основанную на аналогичных принципам детектирования R-зубцов ЭКГ сигнала.
Рисунок 1 – Структурная схема амплитудно-временного обнаружителя
систолического максимума сигнала пульсовой волны
На рисунке 1 приведена структурная схема предлагаемого амплитудно-временного обнаружителя систолического максимума сигнала пульсовой волны (1 – блок полосовой фильтрации, 2 - блок дифференцирования сигнала, 3 – блок возведения сигнала в третью степень, 4 – блок выделения положительных отсчётов, 5 – блок формирования интервала поиска характерной точки, 6 – детектор максимума сигнала, 7 – блок измерения длительностей межпульсовых интервалов, 8 – детектор R-зубцов ЭКГ сигнала).
На первом этапе к исходному сигналу пульсовой волны применяется операция дифференцирования:
где: n – номер отсчёта сигнала, Δs – интервал дискретизации сигнала, Ppg(n) – исходный сигнал пульсовой волны.
Далее полученный после дифференцирования сигнал возводится в третью степень, затем из сигнала удаляются отсчёты с отрицательным значением амплитуды.
На рисунке 2 приведены зависимости изменения сигнала пульсовой волны от времени на различных этапах работы обнаружителя систолического максимума.
Выходной сигнал после прохождения всех этапов предварительной обработки попадает на вход схемы детектирования систолического максимума, состоящей из блока формирования интервала поиска характерной точки сигнала пульсовой волны, детектора максимума.
Опорная точка сигнала пульсовой волны детектируется на фиксированном временном интервале от положения соответствующего R-зубца: (tr+100 мс ÷ tr+450 мс), где tr – временное положение R-зубца. Длительность интервала поиска опорной точки сигнала пульсовой волны определяется на основе априорной физиологической информации о взаимоположении ЭКГ сигнала и сигнала пульсовой волны.
Детектор максимума производит определение временного положения максимума первой производной сигнала пульсовой волны на временном интервале поиска при соблюдении следующих условий:
P3(n)>P3(n+1) & P3(n)>P3(n-1)
При соблюдении указанных условий номер отсчёта n определяет временное положение максимума производной сигнала пульсовой волны, принимаемого за опорную точку сигнала. Временное положение систолического максимума пульсовой волны дополнительно определяется относительно положения успешно обнаруженных опорных точек.
Рисунок 2 – Зависимости изменения сигналов от времени на различных этапах работы обнаружителя (1 –сигнал пульсовой волны после полосовой фильтрации, 2 – сигнал после дифференцирования, 3 – сигнал после
возведения в третью степень, 4 – сигнал после выделения положительных отсчётов)
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
1. Загрузите файл ppgX.txt, где X – номер Вашего варианта. Частота дискретизации сигнала пульсовой волны составляет 100 Гц.
2. Загрузите файл ecgX.txt, где X – номер Вашего варианта. Частота дискретизации ЭКГ сигнала составляет 500 Гц. ЭКГ сигнал зарегистрирован синхронно с сигналом пульсовой волны.
3. На основе разработанного ранее обнаружителя QRS-комплексов для загруженного ЭКГ сигнала сформируйте массив значений, определяющих временное положение QRS-комплексов.
4. Реализуйте описанную выше методику обнаружения систолических максимумов сигнала пульсовой волны на основе синхронизации с ЭКГ сигналом.
5. Разработайте собственный адаптивный обнаружитель систолических максимумов для обработки сигнала пульсовой волны без использования информации об ЭКГ сигнале. Примените данный обнаружитель к загруженному сигналу пульсовой волны.
6. Сравните результаты, полученные по пп. 4 и 5.
СОДЕРЖАНИЕ ОТЧЁТА
1. Цель работы.
2. Листинги написанных программ (M-файлов) в среде MATLAB для каждого задания.
3. Сводная таблица результатов, содержащая полученные в результате проведённых исследований графики зависимостей изменения фрагментов биосигналов на каждом этапе обработки.
4. Выводы о полученных результатах, сопоставление с теорией.
Практическое занятие № 4. Методы и средства контроля
параметров сердечного ритма
Наиболее простым методом оценки параметров сердечного ритма является определение частоты сердечных сокращений (ЧСС). Этот показатель позволяет объективно судить об уровне функционирования сердечно-сосудистой системы пациента. При анестезиологическом мониторинге изменения ЧСС во время наркоза отражают реакцию организма на хирургическое вмешательство. Оценка ЧСС в простейшем случае может производиться путем пальпации колебаний артериальной сосудистой стенки.
Мониторные приборы, используемые в клинической практике, осуществляют непрерывное измерение и цифровую индикацию ЧСС. Эти данные определяются по результатам оценки временных параметров физиологических процессов, происходящих в сердечно-сосудистой системе.
Для определения ЧСС необходимо зарегистрировать сигнал, отражающий биоэлектрическую активность сердца или артериальную пульсацию крови, а затем измерить длительности временных интервалов между одинаковыми фрагментами биосигналов.
При неинвазивных методах измерения артериального давления крови ЧСС оценивается по колебаниям давления в окклюзионной манжетке. В случае прямых измерений давления в магистральных сосудах или лёгочной артерии анализируются пульсовые кривые, регистрируемые на выходе внутрисосудистого датчика давления крови.
В пульсоксиметрах определение ЧСС основано на анализе фотоплетизмограммы пульсирующего участка тканей, чаще всего для этой цели используется кончик пальца руки или мочка уха.
При реографических исследованиях параметров гемодинамики для оценки пульса анализируется электрический сигнал, соответствующий изменению электрического сопротивления участка тканей с пульсирующим сосудом.
Для определения ЧСС наиболее часто используется электрокардиографический канал мониторов, в котором выделяются QRS-комплексы ЭКГ и обрабатываются значения длительностей R-R интервалов.
Определение ЧСС основано на измерении длительности периодов следования пульсовых колебаний (в случае регистрации ЭКГ – QRS-комплексов), представляющих собой – кардиоинтервалы (КИ). После усреднения определённого количества (выборки) полученных значений длительности КИ, ЧСС определяют по формуле:
где: Ti– значение i-го КИ в секундах, N – общее количество КИ в выборке.
Процедуры усреднения и вычисления значений ЧСС осуществляются в устройстве обработки прибора, построенного чаще всего на основе однокристальной ЭВМ.
В анестезиологических мониторах используется “быстрое” усреднение периодов пульсовых колебаний (например, определяется среднее значение по 8 КИ, т.е. объем выборки N=8). Это даёт возможность отслеживать кратковременные эпизоды изменения ЧСС, возникающие, например, при интубации трахеи, и быстро реагировать на эти измерения.
Индикация показаний ЧСС осуществляется методом “скользящей” выборки, т.е. после усреднения КИ, находящихся в выборке, вычисления ЧСС и индикации полученного значения ”окно” выборки сдвигается на один КИ, затем вновь происходит усреднение, вычисление и индикация и т. д. Таким образом, цифровой индикатор ЧСС может изменять свои показания с каждым ударом сердца, реагируя на изменения длительности КИ, находящихся в “окне” выборки.
ЭКГ сигнал отражает информацию о сокращениях сердечной мышцы даже в том случае, когда уровень пульсации сосуда снижается ниже порога регистрации и падает артериальное давление, что делает информацию о ЧСС, полученную по R-R интервалам, особенно ценной. В то же время, при использовании ЭКГ для определения ЧСС необходимо контролировать форму электрокардиосигнала, так как при высокой Т-волне возможно ошибочное удвоение значений ЧСС. Это требование нетрудно выполнить, так как ЭКГ канал мониторов имеет графический дисплей для слежения за формой ЭКГ в реальном масштабе времени.
Ритм сердечных сокращений является наиболее доступным для регистрации физиологическим параметром, отражающим процессы вегетативной регуляции в сердечно-сосудистой системе и организме в целом. Динамические характеристики ритма сердца позволяют оценить выраженность сдвигов симпатической и парасимпатической активности вегетативной нервной системы (ВНС) при изменении состояния пациента.
Анализ вегетативной регуляции по наблюдению за изменениями показателей ритма сердца позволяет выявить картину, характерную для диагностики целого ряда патологических состояний в различных областях медицины. Так, в медицине критических состояний при проведении общей анестезии мониторинг показателей ритма сердца даёт возможность проследить за динамикой реакции ВНС на операционную травму и наркоз.
При анализе адаптационного синдрома активность ВНС, определяемая по отношению к своему тоническому уровню, может быть соотнесена с мерой адаптационных реакций организма, что позволит контролировать выраженность стресса на всех его стадиях. Поскольку ритм сердца находится под контролем звеньев всех уровней управления функциями организма, то его анализ обеспечивает достоверную оценку адаптации системы кровообращения и организма в целом к действию стрессорных факторов.
Следует отметить, что контроль величины ЧСС не всегда в полной мере отражает изменение активности ВНС. Одному и тому же значению ЧСС могут соответствовать неодинаковые комбинации активности звеньев ВНС, обеспечивающие вегетативный гомеостаз. Так, например, снижение тонуса парасимпатического отдела ВНС может сопровождаться уменьшением активности симпатического отдела, при этом средняя ЧСС остаётся постоянной, не отражая изменение состояния вегетативной регуляции.
Активность вегетативной регуляции проявляется в изменении показателей хронотропной структуры сердечного ритма. Математические методы анализа позволяют обнаружить вариабельность сердечного ритма (ВСР) – изменчивость значений длительностей КИ относительно друг друга. Другими словами вариабельность сердечного ритма отражает выраженность колебаний ЧСС по отношению к её среднему уровню. В настоящее время большинство исследователей используют термин ВСР как обобщающее понятие для всех методов исследования и определения показателей сердечного ритма.
Математический анализ сердечного ритма
Для оценки ВСР необходимо зарегистрировать биосигнал, несущий информации о сердечном ритме, измерить длительности КИ и провести математическую обработку динамического ряда полученных значений. Методы анализа ВСР основаны на применении различных методик математической обработки к последовательности значений КИ с целью вычисления показателей ВСР, отражающих состояние сердечно-сосудистой системы человека. Наибольшее распространение в клинической практике получили методы временного (статистического) и частотного (спектрального) анализа ВСР.
Статистические методы применяются для непосредственной количественной оценки ВСР за исследуемый промежуток времени. При их использовании сердечный ритм рассматривается как совокупность последовательных временных интервалов. Наиболее важными статистическими последовательности КИ являются:
1) SDNN – среднеквадратичное отклонение (выражается в мс) величин КИ за весь рассматриваемый период:
,
где: NNi – значение i-го КИ, – среднее значение длительностей КИ, N – размер выборки КИ.
2) RMSSD – квадратный корень из суммы квадратов разности величин последовательных пар КИ (выражается в мс):
3) NN50 – количество пар последовательных КИ, различающихся более чем на 50 миллисекунд, полученное за весь период записи;
4) pNN50 – процент NN50 от общего количества последовательных КИ, полученных за весь период записи (выражается в %).
5) CVr – коэффициент вариации, представляющий собой нормированную оценку дисперсии (выражается в %):
Необходимо заметить, что показатели RMSSD, NN50, pNN50 применяются для оценки коротковолновых колебаний и коррелируют между собой. Показатель SDNN оценивает общую мощность и отражает все циклические колебания в структуре ВСР.
К числу геометрических методов прежде всего относится так называемая вариационная пульсометрия. Этот метод был разработан ещё в начале 60-х годов применительно к задачам космической медицины и затем получил дальнейшее развитие в физиологических и клинических исследованиях.
Сущность вариационной пульсометрии заключается в изучении закона распределения кардиоинтервалов как случайных величин. Последовательность значений длительностей КИ может быть преобразована в геометрическую структуру: распределение плотности длительностей КИ или гистограмму распределения длительностей КИ.
Статистический анализ значений длительностей КИ позволяет наглядно представить закон распределения случайного процесса, которым является ритм сердца, в виде ступенчатой функции – гистограммы, которая может отображаться на дисплее монитора, и описать его набором вычисляемых статистических параметров и диагностических показателей, отражающих активность ВНС.
Для статистической оценки выбирается определённое число значений следующих друг за другом КИ, образующих выборку. Объем выборки N обычно устанавливается в диапазоне 50...250. Однако, как показывают исследования, при выборе N<100 падает статистическая достоверность результатов оценки.
Построение гистограммы производится путём сортировки выборки КИ по их длительности. Для этого весь диапазон длительностей КИ разбивается на временные поддиапазоны одинаковой величины tп. По мере регистрации ЭКГ и измерения длительности КИ подсчитываются количества КИ, попадающие в каждый поддиапазон. Для построения гистограммы в виде ступенчатой функции по горизонтальной оси откладывается длительность КИ, по вертикальной – их количество в соответствующем поддиапазоне (рисунок 1).
Рисунок 1 – Гистограмма распределения КИ
Для здоровых людей в состоянии покоя регистрируется нормальная гистограмма, близкая по виду к симметричной кривой Гаусса (рисунок 1). Гистограмма получена при следующих параметрах: объем выборки Nв=100; амплитуда моды распределения КИ Амо=35%; значение моды распределения КИ Мо=0,99 c; вариационный размах X=0,05 c; величина поддиапазона tп =10 мс.
Существует несколько подходов к определению геометрических показателей ВСР. Одним из основных и наиболее распространенных подходов является непосредственное преобразование параметров геометрической структуры в диагностические показатели ВСР. Наиболее часто используются следующие параметры гистограммы распределения длительностей КИ:
1) Мода распределения M – наиболее часто встречающееся в данной выборке значение КИ (выражается в мс). При нормальном распределении и высокой стационарности исследуемого процесса мода распределения мало отличается от математического ожидания;
2) Амплитуда моды Am – доля значений длительностей КИ, соответствующих значению моды, к общему числу КИ (выражается в %);
3) Вариационный размах ΔХ – разность между максимальным и минимальным значением длительности КИ в выборке (выражается в мс);
4) Триангулярный индекс HRV – отношение общего количества КИ к амплитуде моды.
При построении вариационных гистограмм первостепенное значение имеет выбор способа группировки данных. В многолетней практике сложился традиционный подход к группировке кардиоинтервалов в диапазоне от 0,40 до 1,30 с и интервалом в 8 мс. Тем не менее, ряд исследователей используют более крупный интервал группирования – 50 мс.
Другим подходом к формированию геометрических показателей ВСР является интерполяция кривой плотности распределения длительностей КИ кусочно-линейной функцией (так называемая треугольная интерполяция) и в вычислении показателя TINN. TINN – ширина основания распределения, измеренная как основание треугольника, полученного при аппроксимации гистограммы распределения значений длительностей КИ.
Помимо гистограмм распределения длительностей КИ в анализе ВСР применяют методику построения и анализа скаттерограмм. Скаттерограмма (Lorenz plot) представляет собой графическое изображение пар КИ на двумерной координатной плоскости, по обеим осям которой отложены, соответственно, временные значения предыдущего и последующего интервалов. При построении скаттерограммы образуется совокупность точек, центр которых располагается на биссектрисе. Расстояние от центра до начала осей координат соответствует наиболее ожидаемой длительности сердечного цикла. Величина отклонения точки от биссектрисы влево показывает, насколько данный сердечный цикл короче предыдущего, вправо от биссектрисы – насколько он длиннее предыдущего. Нормальная форма скаттерограммы представляет собой эллипс, вытянутый вдоль биссектрисы.
Данный метод предоставляет возможность качественного анализа временной структуры ВСР, тем не менее, можно использовать следующие количественные показатели:
1) длина основного (без экстрасистол и артефактов) “облака” – длинная ось эллипса L, соответствующая вариационному размаху. По физиологическому смыслу этот показатель не отличается от SDNN, т.е. отражает суммарную мощность регуляции ВСР, но при этом указывает на максимальную амплитуду изменения длительностей КИ;
2) ширина скаттерограммы w – перпендикуляр к длинной оси, проведённый через её середину;
3) площадь скаттерограммы S вычисляется по формуле площади эллипса:
Спектральные методы анализа ВСР получили в настоящее время очень широкое распространение. Применение спектрального анализа сердечного ритма позволяет количественно оценить различные частотные составляющие колебаний ритма сердца и получить наглядное графическое представление о соотношениях спектральных компонент сердечного ритма, отражающих активность определённых звеньев регуляторного механизма. Анализ спектральных параметров даёт информацию о распределении мощности в зависимости от частоты изменения длительностей КИ во времени, при этом полагается, что эти колебания носят гармонический характер, обусловленный физиологической природой процессов регуляции сердечного ритма.
Различают параметрические и непараметрические методы спектрального анализа. К первым относится авторегрессионный анализ, ко вторым – методы на основе применения преобразований Фурье. Обе эти группы методов дают сравнимые результаты.
Использование авторегрессионного анализа требует создание определённой модели, соответствующей анализируемому объекту. К преимуществам параметрического метода можно отнести:
1) более гладкий вид зависимости спектральной плотности мощности от частоты,
2) достаточно точная оценка спектральной плотности мощности даже при малом количестве КИ.
Основным недостатком параметрических методов является необходимость верификации выбранной модели и её сложность (высокий порядок модели) и принципиальная невозможность сравнивать результаты анализа ВСР, полученные с помощью разных моделей.
В современной клинической практике наибольшее распространение получили непараметрические методы спектрального анализа. К преимуществам таких методов относят простоту используемого алгоритма (в большинстве случаев это быстрое преобразование Фурье) и быстроту вычислений.
Рассмотрим основные этапы реализации непараметрического спектрального анализа ВСР.
Исходная последовательность значений длительностей КИ представляет собой временную функцию с нерегулярными отсчётами. Для корректного осуществления Фурье-преобразования, необходимо провести аппроксимацию отсчётов с помощью гладких функций с последующей дискретизацией. Для реализации данного шага наиболее часто применяют интерполяцию с помощью полиномов или сплайнов разной степени. Заметим, что спектральная плотность мощности будет зависеть как от интервала дискретизации, так и от метода интерполяции.
На следующем этапе необходимо полученную временную функцию умножить на сглаживающее окно. Основное назначение этой процедуры заключается в уменьшении величины спектрального смещения. В качестве сглаживающего окна наиболее часто применяют окно Хана, Хеннинга, Хемминга и пр.
Заключительным шагом является нахождение дискретного преобразования Фурье (ДПФ) от полученной временной функции. В качестве алгоритма ДПФ для увеличения скорости выполнения математических операций, особенно в системах мониторной оценки, используется алгоритм быстрого преобразования Фурье (БПФ). На рисунке 2 приведены (сверху вниз) типовые зависимости длительностей КИ от времени и спектральной плотности мощности от частоты соответственно.
Рисунок 2 – Сверху вниз: зависимость длительностей КИ от времени;
зависимость спектральной плотности мощности от частоты
Одним из альтернативных методов выполнения преобразования Фурье является получение периодограмм Уэлча. Суть этого метода заключается в том, что исходная последовательность КИ разбивается на несколько сегментов с 50% перекрытием, затем ДПФ применяется к каждому сегменту отдельно, результирующая величина спектральной плотности мощности получается в результате усреднения по всем сегментам.
Также известен способ определения спектральной мощности без предварительного осуществления процедуры аппроксимации нерегулярных отсчётов последовательности КИ – использование метода периодограмм Ломба (Lomb). Однако было установлено, что адекватная интерполяция и последующее преобразование Фурье являются более эффективными.
При спектральном анализе ВСР важное значение имеет длительность анализируемой выборки. При коротких записях (5 минут) выделяют три главных спектральных компоненты. Эти компоненты соответствуют диапазонам дыхательных волн и медленных волн регуляции 1-го и 2-го порядка. В западной литературе соответствующие спектральные компоненты получили названия высокочастотных (High Frequency – HF), низкочастотных (Low Frequency – LF) и очень низкочастотных (Very Low Frequency – VLF).
Данные спектральные компоненты, согласно существующим стандартам, имеют следующие диапазоны частот:
- HF высокочастотный диапазон (дыхательные волны) – 0,15–0,4 Гц;
- LF низкочастотный диапазон (медленные волны 1-го порядка) – 0,04–0,15 Гц;
- VLF очень низкочастотный диапазон (медленные волны 2-го порядка) – 0,003 – 0,04 Гц.
При анализе длительных записей (от нескольких часов до 24 часов) выделяют также и ультранизкочастотный компонент – Ultra Low Frequency (ULF) с частотами меньше 0,003 Гц.
Спектральными диагностическими показателями являются общая спектральная мощность во всех диапазонах, мощности спектральных составляющих в указанных диапазонах и их соотношение, характеризующее динамику изменения ВСР и баланс регуляции автономной нервной системы.
Комплексное взаимодействие разнообразных факторов, оказывающих влияние на сердечный ритм, обуславливают нелинейный характер изменений его показателей. Для их описания применяются методы нелинейной динамики, в частности фрактальный анализ временных рядов, оценивающий меру сложности представленных данных. Установлено, что определённую долю во временной структуре сердечного ритма составляют непериодические хаотические компоненты, имеющие фрактальную природу. В частности, было показано, что изменение степени выраженности шумовых компонентов в структуре ритма сердца связано с повышенным риском внезапной сердечной смерти.
В настоящее время для оценки нелинейной динамики сердечного ритма наиболее часто используются следующие показатели: показатель Хёрста, определяемый на основе применения метода нормированного размаха (RS-анализ) и характеризующий отношение силы тренда (детерминированный фактор) к уровню шума (случайный фактор); показатель флуктуации, показатель затухания спектральной плотности мощности, определяемый на основе спектральных преобразований; размерность Хаусдорфа и ряд других.
Вычисление показателя Хёрста производится по следующей схеме:
1) на первом этапе вычисляется набор отклонений от среднего значения следующим образом:
где: N – ширина окна, в пределах которого вычисляется отклонение от среднего, изменяющаяся от 2 до значения, равного длине исходной последовательности X, M – переменная, изменяющаяся от 1 до N–1, – среднее значение исходной последовательности, определённое по N элементам. На каждой итерации получается N–1 значений XM,N.
2) далее вычисляется размах отклонения R:
3) на следующем этапе размах отклонения R нормируется делением на стандартное отклонение S, которое вычисляется по N значениям исходной последовательности.
4) далее строится график зависимости log(R/S) от log(N);
5) полученная логарифмическая зависимость аппроксимируется линейным полиномом и определяется угол наклона аппроксимированного графика к оси абсцисс. Тангенс данного угла наклона численно равен показателю Хёрста.
Одним из наиболее перспективных показателей нелинейной динамики является коэффициент флуктуации, определяемый с помощью флуктуационного анализа с устранением трендов (в англоязычной литераторе DFA: Detrended Fluctuation Analysis). Проведённые физиологические исследования показали, что данный показатель обладает высокой прогностической чувствительностью в задачах кардиологической диагностики.
Метод DFA позволяет проводить изучение структуры различных процессов, в том числе и нестационарных, с точки зрения статистического самоподобия. Для количественного описания сердечного ритма как фрактальной структуры необходимо определить характеристику самоподобия – показатель флуктуации α.
Алгоритм вычисления показателя флуктуации α для анализа нелинейной динамики последовательности R-R интервалов включает в себя следующие этапы:
1) на первом этапе из временной последовательности интервалов Xi составляют кумулятивную сумму Xt следующим образом:
где: – среднее значение элементов последовательности, N – общее количество элементов последовательности интервалов.
2) на следующем этапе кумулятивная сумма Xt разбивается на временные окна равной длины L; для каждого временного окна составляется интерполяционный полином, в случае использования метода DFA первого порядка это линейный полином Z.
3) затем для каждого временного окна вычисляется среднеквадратичное отклонение F по формуле:
4) Этапы вычисления 2 и 3 повторяются при различных размерах временного окна L.
5) Определяют характеристический показатель (показатель флуктуации первого порядка) зависимости F(L) как отношение логарифмов изменения F в зависимости от изменения L.
В зависимости от структуры исследуемого процесса показатель флуктуации α может принимать различные значения в диапазоне от 0 до 1,5; так для случая белого шума α=0,5, при преобладании розового шума в изучаемом процессе α возрастает до 1, в случае броуновского процесса – до 1,5.
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Основные определения и понятия о вариабельности сердечного ритма.
2. Средства регистрации параметров сердечного ритма.
3. Статистические показатели ВСР.
4. Гистограммные оценки показателей ВСР.
5. Спектральный анализ сердечного ритма.
6. Нелинейная динамика сердечного ритма.
7. Вычисление показателя Хёрста для оценки нелинейной динамики сердечного ритма.
8. Флуктуационный анализ нелинейной динамики сердечного ритма.
Лабораторная работа № 9. Математический анализ сердечного ритма в среде MATLAB
Для осуществления операций дискретного преобразования Фурье в среде MATLAB существует специальная функция fft, имеющая следующий синтаксис:
fft(x, N)
где: x – входной массив значений, над которыми выполняется операция дискретного преобразования Фурье, N – опциональный параметр, определяющий ширину окна, по умолчанию равен ближайшему к длине последовательности x целому числу вида L=2m, где m – целое число. Данное условие необходимо для реализации алгоритмов быстрого преобразования Фурье, в среде MATLAB используется алгоритм Кули-Тьюки.
Пользователь может самостоятельно задать значение параметра N, в том случае, если это значение не является целым числом вида 2k, в системе MATLAB реализуется алгоритм дискретного преобразования Фурье. Если значение N меньше длины последовательности L, то система отбрасывает последние (L–N) отсчётов последовательности x, если значение N больше длины последовательности L, то исходная последовательность x дополняется последовательностью нулей длиной (N–L).
Функция fft выполняет следующую математическую операцию:
где: n=0, 1, 2,…, N–1: отсчёты во временной области, k=0, 1, 2,…, N–1: отсчёты в частотной области.
Необходимо заметить, что результат дискретного преобразования Фурье X(k) представляет собой последовательность комплексных чисел. Модуль X(k) позволит получить спектр амплитуд, а аргумент X(k) – фазовый спектр.
Для осуществления процедуры обратного преобразования Фурье используется функция ifft, имеющая следующий синтаксис:
ifft(X, N)
Функция ifft выполняет следующую математическую операцию:
В системе MATLAB используются встроенные функции, позволяющие сформировать сглаживающие окна, используемые при спектральном анализе, такие как окно Хана, окно Блекмена, окно Хемминга, окно Бартлета и пр. Все эти функции имеют общий синтаксис, для примера рассмотрим синтаксис функции, позволяющий сформировать окно Хана:
W=hann(N)
где: W – функция окна Ханна, N – требуемое количество отсчётов окна.
Для формирования любого окна может использовать специальная функция window среды MATLAB. Более подробно о работе данной функции можно узнать в справочной системе MATLAB, используя следующую команду doc window.
Для определения спектральной плотности мощности с использованием метода периодограмм Уэлча в среде MATLAB используется функция pwelch, имеющая следующий синтаксис:
PSD=pwelch(x)
Методы интерполяции в среде MATLAB
Интерполяция (интерполирование) – в вычислительной математике способ нахождения промежуточных значений величины по имеющемуся дискретному набору известных значений. При выполнении научных или инженерных расчётов часто приходится оперировать наборами значений, полученных экспериментальным путём или методом случайной выборки. Как правило, на основании этих наборов требуется получить аналитическую функцию, описывающую получаемые значения. Такая функция называется аппроксимирующей, а сам процесс построения такой функции называется аппроксимацией.
Основными видами интерполяции являются: точная в узлах и приближенная в узлах. При интерполяции точной в узлах значения аппроксимирующей функции совпадают со значениями исходной функции в узлах интерполяции.
При интерполяции, приближенной в узлах, значения аппроксимирующей функции не совпадают со значениями исходной функции в узлах интерполяции.
Интерполяция приближенная в узлах наиболее часто реализуется с помощью методов полиномиальной аппроксимация, коэффициенты полинома определяются с помощью метода наименьших квадратов.
Суть метода наименьших квадратов заключается в подборе коэффициентов аппроксимирующей функции таким образом, чтобы сумма квадратов отклонений измеренных значений (ординаты экспериментальных точек) от расчётных значений (значения аппроксимирующей функции в узлах интерполяции) была наименьшей.
Для подбора коэффициентов полинома k-й степени методом наименьших квадратов в среде MATLAB есть функция polyfit, имеющая следующий синтаксис:
K=polyfit(x, y, n)
где: x – массив абсцисс экспериментальных точек (массив значений узлов интерполяции), y – массив ординат экспериментальных точек, n – степень полинома, K – массив коэффициентов полинома.
Для нахождения значения полинома в произвольной точке по известным коэффициентам полинома реализуется с помощью функции polyval:
Y=polyval(K, t)
где: K – массив коэффициентов полинома, t – абсцисса точки, в которой требуется вычислить значений полинома, данный параметр может быть также представлен массивом значений абсцисс, что позволяет получить массив значений полинома Y.
Для получения наилучших результатов интерполяции требуется подобрать оптимальное значение порядка аппроксимирующего полинома.
Для реализации метода интерполяции точной в узлах в среде MATLAB используется функция interp1, имеющая следующий синтаксис:
yi=interp1(x, у, xi , ‘method’)
где: x – массив абсцисс экспериментальных точек, y – массив ординат экспериментальных точек, xi – массив значений аргументов, задаваемый пользователем, method – аргумент, позволяющий пользователю выбрать метод интерполяции, yi – массив значений интерполирующей функции.
Методами интерполяции, применяемыми в функции interp1, являются:
• 'nearest' – ступенчатая (интерполяция по соседним точкам);
• 'linear' – линейная;
• 'cubic' – кубическая;
• 'spline' – кубическими сплайнами.
В том случае, если параметр method функции interp1 не задан, то по умолчанию реализуется метод линейной интерполяции.
Самым простым способом интерполяции данных является ступенчатая интерполяция, при которой значение в каждой промежуточной точке принимается равным значению в ближайшей узловой точке.
Линейная интерполяция приводит к соединению соседних точек отрезками прямых, параметры которых подбираются оптимальным образом согласно соответствующим табличным данным. Кубическая интерполяция аналогична линейной интерполяции, при этом соединение соседних точек осуществляется полиномами третьей степени.
Полиномиальная интерполяция зачастую не всегда обеспечивает удовлетворительные результаты интерполяции данных. Для обеспечения более качественной интерполяции данных используется метод аппроксимации сплайнами, обеспечивающий получение плавного перехода от одного значения к другому.
Сплайн представляет собой гладкую непрерывную функцию, область определения которой разбита на конечное число отрезков, на каждом из которых сплайн совпадает с некоторым алгебраическим полиномом. Максимальная степень из использованных полиномов называется степенью сплайна. Существуют линейные, квадратичные и кубические сплайны. Существенным недостатком сплайновой интерполяции является невозможность получения аналитической формы аппроксимирующей функции.
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
1. Загрузите входной массив значений длительностей КИ, сформированный в результате обработки 5-минутной записи ЭКГ сигнала. Значения отсчётов приведены в мс и содержатся в текстовом файле RRx.txt, где x – номер Вашего варианта. Рассчитайте любые три статистических показателя ВСР.
2. Постройте гистограммы для сформированной последовательности длительностей КИ при различных значениях шага группирования (8 мс, 20 мс, 100 мс). Для каждой из полученных гистограмм определите геометрические показатели ВСР.
3. Постройте амплитудный спектр временной последовательности длительностей КИ, постройте график зависимости спектральной плотности мощности временной последовательности длительностей КИ от частоты. Постройте периодограмму временной последовательности длительностей КИ с помощью метода Уэлча.
4. Разработайте программу вычисления показателей нелинейной динамики сердечного ритма.
СОДЕРЖАНИЕ ОТЧЁТА
1. Цель работы.
2. Листинги написанных программ (M-файлов) в среде MATLAB для каждого задания.
3. Результаты расчёта показателей сердечного ритма, полученные гистограммы и зависимости изменения спектральной плотности мощности последовательности длительностей кардиоинтервалов от частоты.
4. Выводы о полученных результатах, сопоставление с теорией.
Содержание
В рамках данного методического комплекса была осуществлена попытка ознакомить читателя с основными особенностями прикладного анализа биомедицинских сигналов в современной среде компьютерных вычислений MATLAB.
Комплекс методических указаний содержит теоретическую информацию об основных методах регистрации биомедицинских сигналов, общие сведения о компьютерной обработке биосигналов, включает в себя подробный анализ существующих методик линейной фильтрации биосигналов во временной и частотной областях, вейвлет-фильтрации, адаптивной и согласованной фильтрации, методов обнаружения характерных эпох и событий в биомедицинских сигналах, а также подходов к математическому анализу параметров сердечного ритма. Основное внимание было уделено вопросам практической реализации методов цифровой обработки биомедицинских сигналов в среде компьютерных вычислений MATLAB.
Материалы данного комплекса методических указаний могут рассматриваться как первая ступень в изучении проблемы создания современных программных комплексов автоматизированного анализа и обработки биомедицинских сигналов и данных в составе современных клинических систем медицинской диагностики.
Несомненно, дальнейшие исследования в области компьютерного анализа биомедицинских сигналов и данных принесут новые результаты, важные как для решения задач построения более совершенных аппаратно-программных средств медицинской диагностики, так и для решения актуальных клинических проблем своевременной и эффективной оценки состояния организма человека.
1. Калакутский, Л. И. Аппаратура и методы клинического мониторинга: Учебное пособие [Текст] / Л. И. Калакутский, Э. С. Манелис. – М.: Высшая школа, 2004 – 256 с.
2. Рангайян, Р. М. Анализ биомедицинских сигналов. Практический подход [Текст] / Пер. с англ. Под ред. А. П. Немирко – М.: Физматлит, 2007. – 440 с.
3. Сергиенко, А.Б. Цифровая обработка сигналов: Учебное пособие для ВУЗов. [Текст] / А.Б. Сергиенко. – М.: Питер, 2003. – 603 с.
4. Солонина, А.И. Основы цифровой обработки сигналов: учебник для ВУЗов [Текст] / А.И. Солонина.– М.: БХВ, 2005. – 768 с.
5. Гусев, В. Г. Получение информации о параметрах и характеристиках организма и физические методы воздействия на него [Текст] / В. Г. Гусев – М: Машиностроение, 2004. – 597 с.
6. Theis, F.J. Biomedical signal analysis. Contemporary methods and applications [Текст] / F.J. Theis, A. Meyer-Base – The MIT Press, 2010 – 423 p.
7. Федотов, А.А. Измерительные преобразователи биомедицинских сигналов систем клинического мониторинга [Текст] / А.А. Федотов, С.А. Акулов. – М.: Радио и связь, 2013. – 250 с.
8. Webster, J.G. Medical instrumentation. Application and design [Текст] / Edited by J.G. Webster – John Wiley & Sons, 2009. – 675 p.
9. Moore, J. Biomedical technology and devises. Handbook [Текст] / Edited by J. Moore – CRC Press LLC, 2004. – 750 p.
10. Ройтберг, Г. Е. Лабораторная и инструментальная диагностика заболеваний внутренних органов [Текст] / Г. Е. Ройтберг, А. В. Струтынский – М.: Бином, 2003 – 622 с.
11. Баевский, Р.М. Вариабельность сердечного ритма: теоретические аспекты и возможности клинического применения [Текст] / Р.М. Баевский, Г.Г. Иванов – М.: Медицина, 2000. – 295с.
12. Федотов, А.А. Математическое моделирование и анализ погрешностей измерительных преобразователей биомедицинских сигналов [Текст] / А.А. Федотов, С.А. Акулов. – М.: ФИЗМАТЛИТ, 2013. – 282 с.
13. Алексеев, Е.Р. MATLAB 7 [Текст] / Алексеев Е.Р., Чеснокова О.В. – М.: NT Press, 2006. – 464 с.
14. Мэтьюз, Д.Г. Численные методы. Использование MATLAB: перевод с английского под редакцией Ю.В. Козаченко [Текст] / Д.Г. Мэтьюз. – М.: Вильям, 2001. – 713 с.
15. Потемкин, В.Г. Система MATLAB: справочное пособие [Текст] / В.Г. Потемкин. – М.: ДИАЛОГ-МИФИ, 1997. – 350 с.
16. Бронштейн И.Н., Семендяев К.А. Справочник по математике для инженеров и учащихся ВУЗов. – М.: Наука, 1981. – 720 с.
17. Вержбицкий В.М. Основы численных методов. – М.: Высшая школа, 2002. – 840 с.
ПРИЛОЖЕНИЕ. Основы работы в компьютерной среде MATLAB
1. Общие сведения о среде программирования MATLAB
Среда программирования MATLAB представляет собой высокоуровневый технический вычислительный язык и интерактивную среду для разработки алгоритмов, визуализации и анализа данных, числовых расчётов.
MATLAB, как язык программирования, был разработан в конце 1970-х годов. Целью разработки служила задача дать студентам возможность использования программных библиотек Linpack и EISPACK без необходимости изучения Фортрана. Вскоре новый язык распространился среди университетов, и был с большим интересом встречен учёными, работающими в области прикладной математики. В дальнейшем создатели языка переписали MATLAB на C и основали в 1984 компанию The MathWorks для дальнейшего развития. Первоначально MATLAB предназначался для проектирования систем управления, но быстро завоевал популярность во многих других научных и инженерных областях. Он также широко использовался в образовании, в частности для преподавания линейной алгебры и численных методов.
Язык MATLAB является высокоуровневым языком программирования, включающим основанные на матрицах структуры данных, широкий спектр функций, интегрированную среду разработки, объектно-ориентированные возможности и интерфейсы к программам, написанным на других языках программирования.
MATLAB предоставляет удобные средства для разработки алгоритмов, включая высокоуровневые с использованием концепций объектно-ориентированного программирования. В нём имеются все необходимые средства интегрированной среды разработки, включая отладчик и профайлер. Функции для работы с целыми типами данных облегчают создание алгоритмов для микроконтроллеров и других приложений, где это необходимо.
В системе MATLAB имеется возможность создавать специальные наборы инструментов – toolbox, расширяющих его базовую функциональность. Данные наборы инструментов представляют собой коллекции функций, написанных на языке программирования MATLAB для решения определённого класса задач. Компания Mathworks поставляет наборы инструментов, которые используются во многих областях, включая решение таких инженерных задач, как обработка цифровых сигналов и изображений, сбор и анализ экспериментальных данных, и множество других.
Основным объектом системы MATLAB является прямоугольный числовой массив, который допускает комплексные элементы и ввод матриц без явного указания их размеров. Система позволяет решать многие вычислительные задачи за значительно меньшее время, нежели то, которое необходимо для написания соответствующих программ на классических языках программирования.
Работа в среде MATLAB может осуществляться в двух режимах:
• в режиме калькулятора, когда вычисления производятся непосредственно после набора очередного оператора или команды MATLAB; при этом значения результатов вычисления могут присваиваться некоторым переменным, либо результаты получаются непосредственно, без присваивания (как в обычных калькуляторах);
• программный режим – путём вызова программы, составленной и записанной на языке MATLAB, которая содержит все необходимые команды, обеспечивающие ввод данных, организацию вычислений и вывод результатов на экран.
В обоих режимах пользователю доступны практически все вычислительные возможности системы, в том числе по выводу информации в графической форме. Программный режим позволяет сохранять разработанные вычислительные алгоритмы и, таким образом, повторять вычисления при других исходных данных.
Программы, написанные на MATLAB, бывают двух типов — функции и скрипты. Функции имеют входные и выходные аргументы, а также собственное рабочее пространство для хранения промежуточных результатов вычислений и переменных. Скрипты же используют общее рабочее пространство. Как скрипты, так и функции не интерпретируются в машинный код и сохраняются в виде текстовых файлов.
Основной особенностью языка MATLAB является его широкие возможности по работе с матрицами. MATLAB предоставляет пользователю большое количество (несколько сотен) функций для анализа данных, покрывающие практически все области математики.
2. Рабочий стол MATLAB
После вызова MATLAB из среды Windows на экране появляется командное окно среды MATLAB. На рисунке 1 приведён рабочий стол в среде MATLAB, содержащий четыре подокна: окно команд (Command Window), окно рабочего пространства (Workspace Browser), окно текущей папки (Current Directory Window), окно совершенных команд (Command History Window).
Рисунок 1 – Рабочий стол системы MATLAB и его основные компоненты
Окно команд (Command Window) – это область, где пользователь вводит команды и выражения на языке программирования среды MATLAB, и где система размещает свои ответы на пользовательские команды. При каждом сеансе работы среда MATLAB формирует рабочее пространство, т.е. множество переменных, создаваемых пользователем. Команды вводятся после знака “>>”.
Окно совершенных команд (Command History Window) содержит записи всех команд, которые пользователь вводил в окне команд, включая все предыдущие сеансы работы в среде MATLAB. Любую команду можно вызвать ещё раз двойным щелчком мыши на ней.
Окно рабочего пространства (Workspace Browser) отображает переменные, с которыми пользователь работает в данный момент, а также основную информацию о них – размер и тип переменной
Вызов справки в среде MATLAB
Вызов окна справки в среде MATLAB осуществляется нажатием мышью на знак вопроса в строке инструментов рабочего стола или набором команды helpbrowser в командном окне. Справочная система организована в виде веб-обозревателя, интегрированного в рабочий стол MATLAВ, который способен отображать документы, написанные на языке HTML.
Существует другой путь получения справки по конкретной функции среды MATLAB. Для этого достаточно задать в командной строке команду doc, за которой следует поместить имя нужной функции. Справочная система среды MATLAB предоставляет пользователю исчерпывающую информацию по каждой имплементированной функции и содержит наглядные примеры использования данной функции для решения разного рода вычислительных задач.
Обзор возможностей системы MATLAB представляет встроенная демонстрационная программа, для запуска которой следует набрать в командной строке команду demo.
Работа с MATLAB в режиме командного окна
Язык программирования MATLAB имеет свой синтаксис отличных от других языков программирования, хотя и имеющий много общего с высокоуровневыми языками программирования, такими как С и Basic.
Система MATLAB выдаёт результат путём создания новой переменной ans – автоматически создаваемая переменная, которая содержит результат вычислений. Переменная ans также появляется в окне Workspace, где можно увидеть её значение, размерность и т.д. Очистить рабочее пространство Workspace можно командой clear. Для удаления одной или нескольких переменных надо указать их имена после команды clear (например, clear a b c). Для очистки командного окна используется команда clc (очистка не влияет на результаты).
Для присвоения переменной определённого значения используется обычный знак равенства “=”.
Окно Command Window является основным в системе MATLAB. В нем отображаются символы команд, которые набираются пользователем, результаты выполнения этих команд, текст исполняемой программы, а также информация об ошибках выполнения программы, распознанных системой.
Признаком того, что система готова к восприятию и выполнению очередной команды, является наличие в последней строке текстового поля окна знака приглашения (>>), после которого возможен ввод символов или команд.
Ввод действительных чисел
Ввод чисел с клавиатуры производится по общим правилам, принятым для языков программирования высокого уровня:
1) для отделения дробной части числа применяется десятичная точка (вместо запятой при обычной записи);
2) десятичный показатель числа записывается в виде целого числа после предварительной записи символа e (пример: 1.2305е-5).
Простейшие арифметические операции:
+ сложение; − вычитание; * умножение; / деление слева направо; \ деление справа налево; ^ возведение в степень.
Использование MATLAB в режиме калькулятора может происходить путём простой записи в командную строку последовательности арифметических действий с числами, например:
>>4.5^2*7.23−3.14*10.4
ans=113.7515
Результат выполнения действий выводится как значение системной переменной ans.
Вывод промежуточной информации в командное окно подчиняется следующим правилам:
1) если запись оператора не заканчивается символом ";", результат действия этого оператора сразу же выводится в командное окно;
2) если оператор заканчивается символом ";", результат его действия не отображается в командном окне;
3) если оператор не содержит знака присваивания (=), т.е. является просто записью некоторой последовательности действий над числами и переменными, то значение результата присваивается специальной системной переменной ans;
4) полученное значение можно использовать в последующих операторах вычислений под именем ans; при этом следует помнить, что значение системной переменной ans изменяется после действия очередного оператора без знака присваивания;
5) в общем случае форма вывода результата в командное окно имеет вид:
<имя переменной> = <результат>
Особенностью системы MATLAB как калькулятора является возможность использования имён переменных для записи промежуточных результатов в память. Для этого применяется операция присваивания в соответствии со схемой:
<имя переменной> = <выражение>; (например х=25+17)
В системе MATLAB имеется несколько зарезервированных имён переменных:
i и j – мнимая единица (корень квадратный из числа −1);
pi – число π;
inf – обозначение машинной бесконечности;
NaN – обозначение неопределённого результата (например типа 0/0, inf/inf).
Ввод комплексных чисел
Ввод комплексного числа производится путём записи в командном окне строки следующего типа:
<имя переменной>=<значение ДЧ>+i(j)*<значение МЧ>,
где: ДЧ – действительная часть комплексной величины, МЧ – мнимая часть.
>> х=3+j*2
Арифметические операции с комплексными числами аналогичны операциям, используемым при работе с действительными числами.
В MATLAB есть несколько дополнительных функций, рассчитанных только на комплексный аргумент:
real(Z) – выделяет действительную часть комплексного аргумента Z;
imag(Z) – выделяет комплексную часть комплексного аргумента Z;
angle(Z) – вычисляет значение аргумента комплексного числа Z (в радианах от –π до +π);
conj(Z) – выдаёт число, комплексно сопряжённое Z;
abs(Z) – вычисление модуля комплексного числа Z.
Элементарные математические функции MATLAB
Система MATLAB позволяет вычислять различные математические функции. Общая форма вызова функций MATLAB имеет следующий вид:
<имя результата>=<имя функции>(<список имён аргументов или их значений>)
Следующие элементарные алгебраические функции имеют в качестве аргумента одно или два действительных(x, y) или одно комплексное(z) число:
sqrt(x) – вычисление квадратного корня;
fix(x) – округление до ближайшего целого в сторону нуля;
floor(x) – округление до ближайшего целого в сторону отрицательной бесконечности;
ceil(x) – округление до ближайшего целого в сторону положительной бесконечности;
round(x) – обычное округление числа x до ближайшего целого;
sign(x) – вычисление функции знака числа x;
rem(x, y) – вычисление остатка от деления x на y;
pow2(x) – возведение числа 2 в степень числа x;
nextpow2(x) – нахождение числа в степень которого надо возвести число 2, чтобы получить ближайшее целое;
gcd(x, y) – наибольший общий делитель чисел x и y;
lcm(x, y) – наименьшее общий кратное чисел x и y;
exp(x) – вычисление числа е в степени числа x;
log(x) – вычисление натурального логарифма числа x;
log2(x) – вычисление логарифма по основанию 2 от числа x;
log10(x) – вычисление десятичного логарифма числа x;
sin(x) – синус числа x;
cos(x) – косинус числа x;
tan(x) – тангенс числа x;
asin(x) – арксинус числа x (в радианах, в диапазоне от –π/2 до +π/2).
Помимо арифметических операций над операндами могут выполняться операции отношения и логические операции. Операции отношения сравнивают между собой два операнда по величине. Синтаксис используемых операций отношения в системе MATLAB приведён в таблице 1:
Таблица 1 – Синтаксис операций отношения в системе MATLAB
В случае истинности операции отношения результат выполнения равен 1, а в случае ложности – 0. Операции отношения имеют более низкий приоритет, чем все арифметические операции.
Синтаксис используемых логических операций в системе MATLAB приведён в таблице 2:
Таблица 2 – Синтаксис логических операций в системе MATLAB
Другим способом задания логической операции является использование логических операторов: and – оператор логического И, or – оператор логического ИЛИ, xor – оператор исключающего ИЛИ, not – оператор логического отрицания. Логические операторы имеют наивысший приоритет исполнения в системе MATLAB.
3. Основные операции с массивами данных в системе MATLAB
MATLAB является системой, которая специально предназначена для осуществления сложных вычислений с векторами, матрицами и полиномами. Все данные в системе MATLAB представлены в виде различных массивов – векторов и матриц. Под вектором в MATLAB понимается одномерный массив чисел, а под матрицей – двумерный массив.
Массив – множественный тип данных, состоящий из фиксированного числа упорядоченных и однородных элементов. Для доступа к данным, хранящимся в определённом элементе массива, необходимо указать имя массива и порядковый номер этого элемента, называемый индексом.
Исходные значения вектора-строки можно задавать путём поэлементного ввода. Для этого вначале указывают имя вектора, затем ставят знак присваивания “=”, далее открывающую квадратную скобку “[“, за ней значения вектора, отделяя их между собой пробелами или запятыми. Запись завершается закрывающей квадратной скобкой “]”.
Вектор-столбец задаётся аналогично вектору строке, но элементы отделяются друг от друга знаком “;”. Для создания вектора-столбца можно также использовать форму записи с указанием значений через пробел, при этом в конце добавляется апостроф '.
Язык MATLAB даёт пользователям возможность сокращённого ввода вектора, элементы которого являются арифметической прогрессией.
>> A=nz:h:kz
где: nz – начальное значение прогрессии (первый элемент вектора), kz – конечное значение прогрессии (последний элемент вектора), h – разность прогрессии (шаг).
Ввод элементов матрицы осуществляется по строкам. При этом элементы строки матрицы отделяются друг от друга пробелами или запятыми, а строки отделяются друг от друга знаком «;».
Для транспонирования матрицы в конце записи необходимо добавить знак апострофа '.
Для того чтобы MATLAB не выводил каждый раз значение переменной после её ввода, необходимо завершать ввод каждой команды знаком “;”.
Матрицу можно преобразовать в вектор-строку с помощью команды следующего вида:
>> X=A(:);
Обращение к элементу матрицы А производится с помощью следующих команд:
A(i, j) – обращение к элементу i-й строки j-го столбца;
A(i, :) – обращение к i-й строки;
A(:, j) – обращение к j-му столбцу.
Для удаления определённого элемента массива достаточно выполнить следующую команду:
>> A(2, 3)=[];
Данная операция удаляет элемент, находящийся во второй строке и третьем столбце. Операцию удаления можно применять не только к отдельному элементу, но и ко всей строке или ко всему столбцу матрицы.
Система MATLAB в отличие от многих других компьютерных систем вычислений устанавливает начальное значение индекса массива как единицу, а не ноль.
Для выполнения операции конкатенации массивов – объединения нескольких массивов в один, в системе MATLAB необходимо выполнить следующие действия:
>> C=[A B] – горизонтальная конкатенация массивов;
>> C=[A; B] – вертикальная конкатенация массивов.
Для определения числа строк и столбцов матрицы A в системе MATLAB существует Функция size (А), возвращающая вектор [n, p], содержащий данные о количестве строк и столбцов матрицы А, соответственно.
В системе MATLAB существует несколько функций, которые позволяют формировать векторы и матрицы определённого вида:
zeros (M, N) – создаёт матрицу размером M на N с нулевыми элементами;
ones (M, N) – создаёт матрицу размером M на N с единичными элементами;
eye (M, N) – создаёт матрицу размером M на N с единицами по главной диагонали и всеми остальными нулями;
rand (M, N) – создаёт матрицу размером M на N из случайных чисел, распределённых по равномерному закону в диапазоне от 0 до 1;
randn (M, N) – создаёт матрицу размером M на N из случайных чисел, распределённых по нормальному закону в диапазоне от 0 до 1.
В системе MATLAB принято выделять 2 группы операций над массивами: векторные операции и операции по поэлементному преобразованию массивов.
К базовым векторным операциям с массивами относятся операции сложения, вычитания, транспонирования, умножения матрицы на число, умножения матриц, возведение матрицы в целую степень. Данные операции осуществляются в MATLAB с помощью обычных знаков арифметических операций. Умножение одной матрицы на другую происходит путём умножения соответствующей строки первой матрицы на соответствующий столбец второй матрицы, поэтому для реализации операции умножения матриц, необходимо соблюдать условия, накладываемые на размеры матриц: количество строк первой матрицы должно быть равно количеству столбцов второй матрицы, в противном случае систем MATLAB выдаст ошибку.
Операции поэлементного преобразования массивов выполняются над отдельными элементами массива как над обычными скалярными операндами. К таким операциям относятся все из вышеперечисленных элементарных математических функций, зависящих от одного аргумента. Поэлементные операции умножения, деления, возведения в степень, выполняемые над массивами требуют специального синтаксиса языка MATLAB:
>> C=A.*B (поэлементное умножение элементов массивов A и B);
>> C=A./B (поэлементное деление элементов массивов A и B);
>> C=A.^k (поэлементное возведение в степень k элементов массива A).
В системе MATLAB существуют команды, реализующие функции операций над векторами:
length(X) – возвращает длину вектора X;
sum(X) – возвращает сумму элементов вектора X;
cumsum(X) – формирует вектор кумулятивной суммы элементов вектора X;
prod(X) – возвращает произведение элементов вектора X;
cumprod(X) – формирует вектор кумулятивного произведения элементов вектора X;
diff(X) – формирует вектор конечной разности первого порядка элементов вектора X;
min(X) – возвращает вектор [k, n], определяющий минимальный элемент k и его номер n в массиве X;
max(X) – возвращает вектор [k, n], определяющий максимальный элемент k и его номер n в массиве X;
mean(X) – возвращает среднее значение элементов вектора X;
std(X) – возвращает значение среднеквадратичного отклонения элементов вектора X;
sort(X) – формирует вектор, элементы которого расположены в порядке возрастания их значений.
Аналогичные функции могут быть использованы и при обработке матриц, однако, в этом случае синтаксис перечисленных выше функций требуют наличие дополнительного параметра, уточняющего применимость выполнения операция к строкам или столбцам. Более подробную информацию в каждом конкретном случае можно найти в справочной системе MATLAB с помощью формирования команды вида: doc function, где function – искомая функция.
4. Создание M-файлов в среде MATLAB
Работа в режиме калькулятора (командного окна) в среде MATLAB, несмотря на довольно значительные возможности, имеет существенные недостатки. Например, невозможно повторить все предыдущие вычисления и действия при новых значениях исходных данных без повторного набора всех предыдущих операторов; невозможно вернуться назад и повторить некоторые действия или по некоторому условию перейти к выполнению другой последовательности операторов. При большом количестве операторов, возникает проблема отладки программы из-за неизбежных ошибок при наборе команд.
Разработка в среде MATLAB сложных программ с прерываниями, переходами по определённым условиям, с часто повторяемыми однотипными действиями, которые необходимо проводить неоднократно при изменённых входных данных, требуют специального оформления программного кода в виде так называемых M-файлов.
Создание программ позволяет значительно упростить и сократить процесс подготовки повторяемых вычислений, сделать процесс вычислений более наглядным и прозрачным, а благодаря этому – уменьшить вероятность появления принципиальных ошибок при разработке программ. Кроме того, в программах появляется возможность автоматизировать процесс изменения значений входных параметров в диалоговом режиме.
Программирование в системе MATLAB является эффективным средством её расширения и адаптации к решению специфических задач пользователя и реализуется с помощью входного языка системы, который является языком высокого уровня и содержит сложные операторы и функции.
Разработка в среде MATLAB сложных программ с прерываниями, переходами по определённым условиям, с часто повторяемыми однотипными действиями, которые необходимо проводить неоднократно при изменённых входных данных, требуют специального оформления программного кода в виде так называемых M-файлов. Все М-файлы имеют специальное расширение *.m. M-файл представляет собой созданный пользователем последовательный список исполняемых команд MATLAB, сохранённый на диске. Для создания нового М-файла необходимо с помощью меню редактора MATLAB выполнить следующую последовательность действий:
File->New->M-file
В среде программирования MATLAB существует возможность создавать программы 2 типов: скриптовые файл-программы (управляющие программы) и файл-функции (процедуры). При помощи скриптовых файлов оформляются основные программы, управляющие от начала до конца организацией вычислительного процесса. Скриптовые файл-программы не имеют входных и выходных аргументов, все переменные, объявленные в файле, становятся доступными в рабочей среде сразу после выполнения. В скриптовых файл-программах все используемые переменные образуют «рабочее пространство»; их значения сохраняются в течение всего сеанса работы с системой.
В файл-функции оформляются отдельные процедуры и разработанные пользователем специальные функции (т.е. такие части программы, которые рассчитаны на неоднократное использование при изменяемых входных параметрах). Функции могут быть полезны при программировании собственных приложений, функции производят необходимые действия с входными аргументами, согласно составленной пользователем последовательности операций, и возвращают результат в выходных аргументах.
В файл-функциях все имена переменных внутри файла, а также имена переменных, указанные в заголовке, воспринимаются как локальные, т. е. все значения этих переменных после завершения работы процедуры исчезают, и область оперативной памяти компьютера, которая была отведена под запись значений этих переменных, освобождается для записи в неё значений других переменных. Важной особенностью работы с файл-функциями в среде MATLAB является то, что файл-функции не оперируют переменными из рабочего пространства Workspace.
Для клавиатурного ввода данных, необходимых при работе программы, в системе MATLAB используется команда input, имеющая следующий синтаксис:
x=input(‘string’)
где: x – скалярная переменная в которую будет помещено введённое с клавиатуры значение, string – выводимое на экран сообщение.
Для исполнения скриптового М-Файла (файл-программы) в системе MATLAB необходимо выполнить одно из приведённых действий:
1) набрать имя файла в командной строке и нажать кнопку Enter (при этом необходимо помнить, что система MATLAB чувствительна к регистру);
2) нажать кнопку F5 на клавиатуре;
3) вызвать команду Debug->Run из меню редактора M-файлов.
Общие сведения о структуре файл-функций среды
программирования MATLAB
Для создания файл-функций в среде MATLAB необходимо создать новый M-файл, первая строка которого представляет собой заголовок файл-функции и должна содержать структуру следующего вида:
function f=funname(x)
где: x – входной параметр (аргумент функции), f – выходной параметр (значение функции, определяемое значением аргумента x), funname – имя функции, function – обязательное наименование в заголовке m-файла, показывающее, что данный m-файл содержит файл-функцию.
После данного заголовка следует тело файл-функции, содержащее последовательность исполняемых команд, написанных на языке программирования среды MATLAB.
Название файла, содержащего файл-функцию, должно обязательно совпадать с названием m-файла, хранящегося в локальной директории. Для вызова и исполнения файл-функции в рабочем пространстве среды MATLAB необходимо поместить созданный m-файл в текущий каталог Current Directory, в том случае, если пользователь использует каталог, отличный от текущего, необходимо добавить его в путь поиска среды MATLAB, в противном случае система не сможет использовать созданную файл-функцию.
Для вызова созданной пользователем файл-функции достаточно набрать в командной строке название файл-функции с указанием значения входного аргумента:
>> funname(x)
Вызов файл-функций может также осуществляться из скриптовых файл-программ или из других файл-функций в среде MATLAB. Синтаксис обращения к созданной пользователем файл-функции аналогичен синтаксису использования стандартных функций среды программирования MATLAB.
Файл-функции, создаваемые в среде MATLAB могут иметь несколько входных аргументов, в этом случае все входные аргументы размещаются в списке и отделяются друг от друга запятой:
function f=funname(x, y, z)
Файл-функции могут также иметь несколько выходных аргументов, в этом случае выходные аргументы добавляются через запятую в список выходных параметров, который заключается в квадратные скобки:
function [f, y, s]=funname(x, y, z)
В среде MATLAB можно создавать файл-функции с переменным количеством входных параметров, в этом случае в качестве входного параметра будет задействован массив ячеек, позволяющий хранить разнородные данные. Все входные параметры сохраняются в виде единственного параметра массива ячеек varargin. С помощью функции length(varargin) можно будет вычислить количество указанных пользователем входных параметров, а с помощью конструкции вида varargin(i) обратиться к i-му из них.
function [f, y, s]=funname(varargin)
В системе MATLAB, начиная с версии MATLAB 7.0 разрешается использование вложенных файл-функций, структура основной файл-функции в этом случае имеет следующий вид:
function [f, y, s]=funname (x, y, z) % заголовок основной функции
function [f1, y1, s1]=funname (x1, y1, z1) % заголовок первой подфункции
<операторы 1> % операторы первой подфункции
end % конец первой подфункции
function [f2, y2, s2]=funname2 (x2, y2, z2) % заголовок второй подфункции
<операторы 2> % операторы второй подфункции
end % конец второй подфункции
……
<операторы> % операторы основной функции
end % конец основной функции
Основная функция обменивается информацией с подфункциями при помощи входных и выходных параметров. Переменные, определённые в подфункциях и в основной функции, являются локальными и доступны только в пределах функции. Одним из возможных вариантов использования переменных, которые являются общими для всех файл-функций, состоит в объявлении данных переменных в начале основной функции и начале подфункции как глобальных с помощью оператора global, содержащего список переменных, разделённых пробелом:
global x y z
В среде MATLAB есть возможность передавать имя функции как входной параметр файл-функции, что существенно расширяет возможности программирования. В данном случае имя функции передаётся как строка, а вычисление функции осуществляется с помощью оператора feval:
feval(‘funname’, x, y, z)
где: ‘funname’ – строка с именем вызываемой функции, которая может быть как стандартной встроенной функцией, так и функцией, определённой пользователем, x, y, z – значения аргументов функции funname, разделённые запятой.
Одним из преимуществ языка программирования среды MATLAB является возможность использования рекурсивных функций. Под рекурсией в программировании понимается вызов функции из её тела. Классическими рекурсивными функциями является возведение числа в целую положительную степень, вычисление факториала. В рекурсивных алгоритмах функция вызывает саму себя до выполнения какого-либо условия.
Основные файл-функции среды программирования MATLAB
Наиболее распространёнными операциями математического анализа являются поиск экстремума и нулей различных математических функций.
При решении задач нахождения максимума или минимума функции одной переменной y=f(x) выделяют задачи поиска локального (на каком-либо интервале) или глобального (на всей области определения функции) экстремума. В среде программирования MATLAB поиск локального минимума осуществляется с помощью имплементированной файл-функции fminbnd, имеющей следующий синтаксис:
[x, y]=fminbnd(@name, a, b, [options])
где: name – имя файл-функции в среде MATLAB, определяющей искомую математическую функцию f(x); a, b – границы интервала аргумента функции x, на котором осуществляется поиск минимуму функции f(x); options – параметры, управляющие процессом вычисления, являются необязательными атрибутами функции fminbnd; x, y – значение аргумента при котором достигается минимум функции f(x) на заданном интервале и значение функции f(x), соответственно.
Дополнительный атрибут options функции fminbnd, контролирующий процесс вычисления в среде MATLAB позволяет пользователю конфигурировать точность вычисления экстремума функции, а также ряд дополнительных параметров, таких как количество итераций вычислительного процесса, количество вызовов функций и т.д. Значение атрибута options необходимо предварительно сформировать при помощи функции optimset в соответствии с характером требуемого контроля вычислительного процесса. Например, следующая последовательность команд задаёт точность выполнения вычисления равную 10-9:
options=optimset(‘TolX’, 1.0e-09)
Для поиска информации о других значениях атрибута options функции fminbnd можно воспользоваться справочной системой MATLAB, с помощью следующих команд: doc fminbnd и doc optimset.
Функцию fminbnd можно использовать и для вычисления локального максимума: для этого достаточно применить файл-функцию с именем @name с противоположным знаком.
Перед выполнением операций нахождения локальных экстремумов сложной функции удобно предварительно построить график этой функции, что позволит визуально оценить интервалы поиска локальных экстремумов и повысить эффективность использования функции fminbnd.
Вычисление экстремума функции нескольких переменных z=f(x1, x2,…, xn) осуществляется с помощью функции fminsearch, имеющей следующий синтаксис:
[X, z]=fminsearch(name, X0, [options])
где: name – имя файл-функции в среде MATLAB, определяющей искомую математическую функцию z=f(x1, x2,…, xn); X0 – вектор, состоящий из n элементов, содержащий координаты точки начального приближения, options – параметры, управляющие процессом вычисления, X – вектор, состоящий из n элементов, и содержащий координаты точки, в которой достигается минимум функции, z – значение функции в точке с координатами X.
Для нахождения нуля функции (значение аргумента x, при котором функция f(x) обращается в нуль) y=f(x) в среде MATLAB используется встроенная функция fzero, имеющая следующий синтаксис:
x=fzero(‘name’, [a b], options)
где: name – имя файл-функции в среде MATLAB, определяющей искомую математическую функцию f(x); a, b – границы интервала изоляции значения аргумента, при котором искомая функция обращается в нуль; options – параметры, управляющие процессом вычисления.
Для более эффективного определения нуля функции f(x) с помощью файл-функции fzero можно визуально локализовать примерный диапазон значений аргумента x, при котором функция f(x) обращается в нуль, построив график функции y=f(x).
С помощью файл-функции fzero можно находить корни алгебраических или трансцендентных уравнений. Для этого необходимо искомое уравнение представить в виде: f(x)=0, а затем найти нули функции f(x).
5. Визуализация вычислений в среде MATLAB
Построение диаграмм и гистограмм в среде MATLAB
Высокоуровневая графика системы программирования MATLAB позволяет пользователю получать результаты вычислений в графическом виде. Среда MATLAB обладает развитыми возможностями визуализации и позволяет строить двухмерные и трёхмерные графики функций, заданных в аналитическом виде, в виде векторов и матриц; даёт возможность построения множества функций на одном графике; позволяет представлять графики разными цветами, типами точек и линий. Система способна также строить диаграммы, гистограммы и графики специальных функций, как в декартовой системе координат, так и в полярной системе координат.
Наглядным способом представления векторных и матричных данных является построение диаграмм и гистограмм. Значение элемента вектора пропорционально высоте столбика диаграммы в случае построения столбчатой диаграммы или площади сектора для круговой диаграммы. Гистограмма используется для получения информации о распределении данных по заданным интервалам и представляет собой графическое изображение зависимости частоты попадания элементов выборки в определённый диапазон значений от соответствующего интервала группировки.
Представление векторных данных
Для построения диаграммы в среде MATLAB используется функция bar, имеющая следующий синтаксис:
bar(coord, data, a)
где: coord – вектор с координатами точки разметки, data – вектор значений, которые требуется отобразить на диаграмме, а – параметр, определяющий ширину столбца диаграммы, по умолчанию равен 0,8.
Функция bar может иметь только один входной аргумент, являющийся вектором значений, отображаемых на диаграмме. Аргументом функции может быть как вектор-строка, так и вектор-столбец.
Функция barh позволяет строить горизонтальную столбчатую диаграмму. Для построения объёмных диаграмм применяется функция bar3. Синтаксис использования функция barh и bar3 аналогичен синтаксису функции bar.
Для построения круговой диаграммы используется функция pie, имеющая следующий синтаксис:
pie(data, parts)
где: data – вектор значений, которые требуется отобразить на круговой диаграмме, parts – аргумент, определяющий номер сектора круговой диаграммы, который необходимо отодвинуть от основного круга диаграммы, представляет собой вектор, состоящий из нуля и единиц, причём единица должна находиться в позиции, соответствующей номеру отделяемой части.
При построении круговой диаграммы в среде MATLAB происходит нормировка значений входного вектор, если сумма значений вектора превышает единицу. В том случае, если сумма значений меньше единицы, нормировка не происходит и строится круговая диаграмма с пропущенным сектором.
Для построения трёхмерной круговой диаграммы используется функция pie3 с аналогичным функции pie синтаксисом.
Для построения гистограмм в среде MATLAB существует функция hist, имеющая следующий синтаксис:
hist(data, N)
где: data – входной вектор данных, значения которых требуется отобразить на гистограмме, N – число интервалов разбиения, по умолчанию равно 10.
Зачастую вместо автоматического разбиения на равные интервалы удобнее использовать собственное разбиение, для этого необходимо использовать следующий синтаксис функции hist:
hist(data, centers)
где: data – входной вектор данных, значения которых требуется отобразить на гистограмме, centers – вектор, содержащий значения центров интервалов разбиения.
Для построения гистограммы по заданным значениям границ интервалов используется функция histc в сочетании с функцией bar. Функция histc имеет следующий синтаксис:
count=histc(data, interval)
где: data – входной вектор данных, значения которых требуется отобразить на гистограмме, interval – вектор, содержащий границы интервалов разбиения, count – выходной вектор, содержащий число величин, попавших в заданные интервалы.
Для построения гистограммы по заданным значениям границ интервалов необходимо воспользоваться функцией bar следующим образом:
bar(interval, count, ‘histc’)
Функция hist может использоваться не только для построения гистограммы, но и для получения информации о распределении данных во входном векторе. Для этого необходимо задать функцию hist следующим образом:
[count, intervals]=hist(data, N)
где: data – входной вектор данных, N – число интервалов разбиения, count – вектор, значения элементов которого соответствуют числу элементов из входного вектора data, попавших в один из N интервалов, intervals – вектор значения элементов которого определяют границы интервалов разбиения.
Для построения угловых диаграмм в полярных координатах используется функция rose, входным аргументом которой является вектором значений в радианах. Угловые диаграммы дают наглядное представление о данных, связанных с измерениями направлений.
Представление матричных данных
Синтаксис функции bar, используемой для построения столбчатой диаграммы, для визуализации числовых значений, представленных в виде матрицы, не отличается от синтаксиса функции при оперировании с векторными массивами. В результате применения функции bar с входным аргументом в виде матрицы получается диаграмма сгруппированных данных. Количество групп данных равно числу строк матрицы, при этом каждая группа состоит из столбиков, количество которых равно числу столбцов матрицы.
Для построения диаграммы с накоплением используется функция bar с дополнительным входным аргументом:
bar(data, ‘stack’)
где: data – входной вектор данных.
Диаграмма с накоплением формируется из исходной диаграммы сгруппированных данных, путём суммирования числовых значений элементов в пределах каждой группы, при этом каждая группа изображается в виде одного столбика, состоящего из частей, высота каждой части соответствует вкладу каждой величины в сумму внутри группы.
Для построения диаграммы с областями используется функция имеющая синтаксис вида:
area(data)
Диаграмма с областями находит своё применение при анализе изменяющихся величин и позволяет одновременно отслеживать значение вклада каждой величины в общую сумму.
Построение двумерных графиков функций в среде MATLAB
Основной функцией, обеспечивающей построение графиков функций одной переменной в линейном масштабе в декартовой системе координат, является функция plot, общая форма синтаксиса которой имеет вид:
plot (x, у)
plot (x, у, s)
plot (x1, y1, s1, x2, y2, s2, ... , xn, yn, sn),
где: х – аргумент функции, задаваемой в виде вектора; у – функция, представленная в аналитическом виде или в виде вектора или матрицы; s – вектор стилей графика; константа, определяющая цвет линий графика, тип точек и тип линии; x1, х2, ... , хn – аргументы функций, изображаемых на одном графике; y1, у2, ... , уn – функции, изображаемые на одном графике.
Другим способом построения нескольких графиков в одной системе координат и в одном графическом окне является использование команды hold on, блокирующей создание нового графического окна после использования функции plot. Например, следующая последовательность команд обеспечивает построение двух графиков функций f(x) и y(x) в одной системе координат и в одном графическом окне:
plot(x, y)
hold on
plot(x, f)
Данная последовательность команд аналогична одной команде следующего вида:
plot(x, y, x, f)
Для создания нового графического окна в среде MATLAB используется команда figure, после применения которой, все последующие графические операции будут осуществлять построение графиков в данном окне. Например, следующая последовательность команд обеспечивает построение двух графиков функций f(x) и y(x) в двух различных графических окнах:
plot(x, y)
figure
plot(x, f)
Входной аргумент функции plot, определяющий стиль графика, является опциональным. При задании стиля соответствующий входной аргумент функции plot представляется в виде вектора, элементы которого последовательно определяют цвет линии графика, тип точки графика и тип линии графика, соответственно, разделённые запятыми и выделенные одиночными кавычками.
Например, команда следующего вида позволяет построить график красного цвета (‘R’), точки графика представлены звёздочками (‘*’), линия графика, соединяющая эти точки является штрихпунктирной линией (‘-.’):
plot (x, у, [‘R’, ‘*‘, ‘-.’])
Помимо описанного выше программного способа задания стилей графика в среде MATLAB существует возможность модификаций внешнего вида графиков, используя возможности графического окна, в котором они отображаются.
Графическое представление в виде ступенчатого графика осуществляется с помощью функции stairs, синтаксис которой аналогичен синтаксису функции plot.
Для построения двух графиков в разном масштабе в одной системе координат используется функция plotyy, которая позволяет отображать на графике 2 оси ординат. Синтаксис функции plotyy аналогичен синтаксису функции plot.
Для построения графиков в логарифмическом и полулогарифмическом масштабе используются следующие функции:
loglog – построение графика в логарифмическом масштабе;
semilogx – построение графика в полулогарифмическом масштабе по оси x;
semilogy – построение графика в полулогарифмическом масштабе по оси y.
Синтаксис функций построения графиком в логарифмическом масштабе аналогичен синтаксису функции plot.
Для оформления графиков в среде MATLAB служат следующие операторы:
title(‘inscription’) – задание титульной надписи на графике (inscription – текстовая надпись, которую необходимо заключить в одинарные кавычки);
xlabel(‘inscription’) – задание надписи по оси x;
ylabel(‘inscription’) – задание надписи по оси y;
grid on – задание пунктирной масштабной сетки на графике.
В среде MATLAB существует возможность разбиения одного графического окна на несколько подграфиков, каждый из которых имеет свою систему координат. Для этого используется функция subplot, которая располагает графики в виде матрицы и имеет следующий синтаксис:
subplot (m, n, p)
где m – число графиков по горизонтали, n – по вертикали, p – текущая позиция графика.
Номер подграфика отсчитывается от левого верхнего угла построчно. Команда следующего вида предполагает наличие 6 подграфиков в одном графическом окне (3 по вертикали и 2 по горизонтали):
subplot (3, 2, 4)
Данная команда делает четвёртый по счёту график текущим (второй справа в среднем ряду), после выполнения такой команды все графические операции будут осуществлять вывод в данный подграфик.
6. Работа с файлами в среде MATLAB
Создание программ часто предполагает сохранение результатов расчётов в файлы для их дальнейшего анализа, обработки и хранения. В связи с этим в среде MATLAB реализованы различные функции по работе с файлами, содержащие данные в разных форматах.
Для загрузки данных из файла, расположенного на локальном диске в рабочую среду MATLAB, используются следующие операторы: load, fread и fscanf. Для сохранения данных из рабочей среды MATLAB в файл на локальном диске предусмотрено использование следующих операторов: save, fwrite, fprintf.
В самом простом случае для сохранения и последующей загрузки каких-либо данных в среде MATLAB предусмотрены следующие функции, соответственно: save
и load, имеющие следующий
синтаксис:
save <имя файла> <имена
переменных>
load <имя файла> <имена
переменных>
Функция save позволяет сохранять произвольные переменные, используемые в программе в файл, который будет по умолчанию располагаться в рабочем каталоге (обычно поддиректория work) и иметь расширение mat. Соответственно функция load позволяет загрузить из указанного mat-файла ранее сохранённые переменные.
Недостатком функций save и load является то, что они работают с определёнными форматами файлов (обычно mat-файлы) и не позволяют загружать или сохранять данные в других форматах. Между тем бывает необходимость загружать информацию, например, из бинарных файлов, созданных другими программными продуктами для дальнейшей обработки результатов в среде MATLAB. С этой целью в среде MATLAB предусмотрены следующие функции
fwrite(<идентификатор
файла>, <переменная>, <тип данных>)
<переменная>=fread(<идентификатор
файла>, <размер>, <точность>)
где: <идентификатор файла> – это указатель на файл, с которым предполагается работать. Для того, чтобы получить идентификатор файла, используется функция fopen
, имеющая следующий синтаксис:
<идентификатор
файла>=fopen(<имя файла>,<режим работы>)
где: параметр <режим работы> может принимать значения, приведённые в таблице 4.
В том случае, если функция fopen() по каким-либо причинам не может корректно открыть файл, то она возвращает значение –1. После выполнения всех файловых операций файл должен быть закрыт с помощью функции fclose следующей структуры:
fclose(<идентификатор файла>
)
С помощью команды fclose(all
) можно закрыть сразу все открытые файлы, кроме стандартных системных файлов.
Пример использования функций работы с файлами:
A=[1 2 3 4 5];
fid=fopen('my_file.dat', 'wb');
% открытие файла на запись
fwrite(fid, A, 'double');
% запись
матрицы А в файл
fclose(fid);
% закрытие файла
B=fread(fid, 5, 'double');
% чтение 5 значений в формате double
disp(B);
% отображение на экране
fclose(fid);
% закрытие файла
В результате выполнения данных операций в рабочем каталоге MATLAB будет создан файл my_file.dat размером 40 байт, в котором будут содержаться 5 значений типа double, записанных в виде последовательности байт (по 8 байт на каждое значение). Функция fread() считывает последовательно сохранённые байты и автоматически преобразовывает их к типу double, т.е. каждые 8 байт интерпретируются как одно значение типа double.
В приведённом примере в явном виде указывалось число элементов для считывания из файла. Однако, часто общее количество элементов бывает неизвестным, либо изменяется в процессе работы программы. В этом случае необходимо считывать данные из файла до тех пор, пока не будет достигнут его конец. В MATLAB существует функция для проверки достижения конца файла, которая возвращает 1 при достижении конца файла и 0 в других случаях и имеет следующий синтаксис:
feof(<идентификатор файла>)
Таблица 3 Режимы работы с файлами в среде MATLAB при использовании функции fopen
Значение параметра <режим работы> |
Описание параметра |
'r' |
чтение |
'w' |
запись (стирает предыдущее содержимое файла) |
'a' |
добавление (создаёт файл, если его нет) |
'r+' |
чтение и запись (не создаёт файл, если его нет) |
'w+' |
чтение и запись (очищает прежнее содержимое или создаёт файл, если его нет) |
'a+' |
чтение и добавление (создаёт файл, если его нет) |
'b' |
дополнительный параметр, означающий работу с бинарными файлами |
Описанные ранее функции работы с файлами позволяют записывать и считывать информацию по байтам, которые затем требуется правильно интерпретировать для преобразования их в числа или строки. В то же время выходными результатами многих программ являются текстовые файлы, в которых явным образом записаны те или иные числа или текст. Прочитать такой файл побайтно, а затем интерпретировать полученные данные довольно трудоёмкая задача, поэтому для этих целей были специально разработаны функции форматированного чтения или записи информации: fscanf
и fprintf, соответственно.
Функция чтения fscanf имеет
следующий синтаксис:
[value,
count]=fscanf(fid, format, size)
где: value – результат считывания данных из файла; count – число прочитанных (записанных) данных; fid – указатель на файл; format – формат чтения (записи) данных; size – максимальное число считываемых данных
Функция записи fprintf
имеет следующий синтаксис:
count=fprintf(fid,
format, a, b, ...)
где: a, b,… – переменные для записи в файл.
Таблица 4 Список основных спецификаторов параметра format
для функций fscanf() и fprintf()
Спецификатор |
Описание |
%d |
целочисленные значения |
%f |
вещественные значения |
%s |
строковые данные |
%c |
символьные данные |
%u |
беззнаковые целые значения |
В форматной строке могут быть также использованы различные управляющие символы:
\r – возврат каретки;
\t – горизонтальная табуляция;
\n – переход на новую строку
С помощью функции fprintf() можно осуществлять запись разнородных данных в файл в требуемом формате, в том числе и строковых переменных, что позволяет размещать в файле различные текстовые надписи.
7. Основы программирования в среде MATLAB
В соответствии с концепцией структурного программирования, предложенной Н. Виртом, любая программа представляет собой структуру, построенную из трёх типов базовых конструкций:
последовательное исполнение – однократное выполнение операций в том порядке, в котором они записаны в тексте программы;
ветвление – однократное выполнение одной из двух или более операций, в зависимости от выполнения некоторого заданного условия;
цикл – многократное исполнение одной и той же операции до тех пор, пока выполняется некоторое заданное условие – условие продолжения цикла.
В программе базовые конструкции могут быть вложены друг в друга произвольным образом, но никаких других средств управления последовательностью выполнения операций не предусматривается.
Оператор ветвления (условная инструкция, условный оператор) – конструкция языка программирования, обеспечивающая выполнение определённой команды или набора команд только при условии истинности некоторого логического выражения, либо выполнение одной команды из набора команд в зависимости от значения некоторого выражения.
Существует две основные формы применения оператора ветвления, встречающиеся в языках программирования: условный оператор и оператор многозначного выбора.
Условный оператор реализует выполнение определённых команд при условии, что некоторое логическое выражение (условие) принимает значение «истина» (true)
.
В общем случае синтаксис условного оператора с одной ветвью в среде программирования MATLAB имеет следующий вид:
if <условие>
<операторы 1>
else
<операторы 2>
end
Набор операторов представляет собой тело выражения, операторы 1 выполняются только в том случае, если условие истинно, если условие ложно, то выполняются операторы 2. Применение конструкции с использованием команды else не является обязательным, в том случае если отсутствуют операторы 2.
В случае наличия нескольких условий конструкция условного оператора имеет следующий вид:
if <условие 1>
<операторы 1>
elseif <условие 2>
<операторы 2>
elseif <условие 3>
<операторы 3>
…...
else
<операторы n>
end
В системе MATLAB могут применяться следующие операторы сравнения:
< – меньше;
<= – меньше или равно;
> – больше;
>= – больше или равно;
= – равно;
~= – не равно.
В MATLAB возможно выполнение следующих логических операций:
& – логическое «и» (and);
| – логическое «или» (or);
~ – логическое отрицание (not).
Результатом логических операций являются числа: 0 в том случае, если условие ложно и 1 – если условие истинно.
Оператор многозначного выбора имеет несколько ветвей и при этом выполняет одну заданную ветвь в зависимости от значения вычисляемого ключевого выражения. Принципиальным отличием данной конструкции от условного оператора является то, что выражение, определяющее выбор исполняемой ветви, возвращает не логическое, а целое значение, либо значение, тип которого может быть приведён к целому.
Синтаксис оператора многозначного выбора в среде программирования MATLAB имеет следующий вид:
switch <выражение>
case <значение 1>
<операторы 1>
case <значение 2>
<операторы 2>
.....
otherwise
<операторы n>
end
Применение конструкции с использованием команды otherwise не является обязательным, в том случае если отсутствуют операторы n.
Цикл – разновидность управляющей конструкции в высокоуровневых языках программирования, предназначенная для организации многократного исполнения набора инструкций.
Последовательность инструкций, предназначенная для многократного исполнения, называется телом цикла. Единичное выполнение тела цикла называется итерацией. Выражение, определяющее, будет в очередной раз выполняться итерация, или цикл завершится, называется условием выхода или условием окончания цикла (либо условием продолжения в зависимости от того, как интерпретируется его истинность – как признак необходимости завершения или продолжения цикла). Переменная, хранящая текущий номер итерации, называется счётчиком итераций цикла или просто счётчиком цикла. Цикл может не содержать счётчик: условие выхода из цикла может определяться внешними условиями (например, наступлением определённого времени).
Исполнение любого цикла включает первоначальную инициализацию переменных цикла, проверку условия выхода, исполнение тела цикла и обновление переменной цикла на каждой итерации. Кроме того, большинство языков программирования предоставляют средства для досрочного управления циклом, например, операторы завершения цикла, то есть выхода из цикла независимо от истинности условия выхода и операторы пропуска итерации.
Безусловный (бесконечный) цикл – цикл, выход из которого не предусмотрен логикой программы. Специальных синтаксических средств для создания бесконечных циклов, ввиду их нетипичности, языки программирования не предусматривают, поэтому такие циклы создаются с помощью конструкций, предназначенных для создания обычных циклов.
Наибольшее распространение в среде компьютерных вычислений MATLAB получили два вида циклов: арифметический цикл или цикл со счётчиком и условный цикл или цикл с предусловием.
Цикл со счётчиком – цикл, в котором некоторая переменная изменяет своё значение от заданного начального значения до конечного значения с некоторым шагом, и для каждого значения этой переменной тело цикла выполняется один раз.
Для организации циклов со счётчиком в среде программирования MATLAB используется последовательность операторов со следующим синтаксисом:
for j=j1:k:jn
<операторы>
end
где: j – управляющая переменная (счётчик) цикла, j1, jn – начальное и конечное значения счётчика цикла, соответственно; k – приращение счётчика цикла, по умолчанию равно 1.
Цикл с предусловием – цикл, который выполняется пока истинно некоторое условие, указанное перед его началом. Это условие проверяется до выполнения тела цикла, поэтому тело может быть не выполнено ни разу (если условие с самого начала ложно).
Для организации циклов с предусловием в среде программирования MATLAB используется последовательность операторов со следующим синтаксисом:
while <условие>
<операторы>
end
Цикл с предусловием обеспечивает выполнение операторов тела цикла, пока истинно проверяемое условие
В среде MATLAB, как и во многих языках программирования высокого уровня, существует возможность организовать цикл внутри тела другого цикла. Такой цикл будет называться вложенным циклом. Вложенный цикл по отношению к циклу, в тело которого он вложен, будет именоваться внутренним циклом, и наоборот, цикл, в теле которого существует вложенный цикл будет именоваться внешним по отношению к вложенному. Внутри вложенного цикла в свою очередь может быть вложен ещё один цикл, образуя следующий уровень вложенности и так далее. Количество уровней вложенности, как правило, не ограничивается.
Для досрочного выхода из внутреннего или внешнего цикла используется команда break. Для продолжения исполнения цикла используется команда return. Для приостановки выполнения программы может использоваться команда pause – приостановка до нажатия любой клавиши; команда pause (n) – приостановка на n секунд или команда keyboard – приостановка с возможностью выполнять практически любые команды и последующим возвратом в программу командой return.
Комментарии
Здравствуйте, дорогая коллеги. Я прочитал приведенную выше литературу, хотя и кратко. Эта книга мне очень интересна. Вы можете прислать мне электронную копию этой книги? Спасибо.