Пик детектор в реальном времени
Пик детектор в реальном времени
Имеется пульсовая волна, массив Pulse. Частота дискретизации - 1000 Гц. Так вот такой сигнал поступает у меня в виде массив в реальном времени.
Требуется вычислить пики этого сигнала - один "горб" - один пик. А потом вычислить расстояние по Х между этими пиками, здесь кое-что наработал.
Вопросы:
1. У пик-детекторов имеется параметр threshold. Во многих экземплах он задается курсором по горизонтальной оси. Причем на Graphe. А у меня
сигнал течет по Chart, где курсор создать нельзя. Но если к чарту создать дополнительный Graph, то на нем в свою очередь будет отображаться
только один горб сигнала. В контрол забивать значение границы тоже не очень удобно. Как можно наглядно решить эту проблему?
2. Как пометить отыскиваемые пики на том же charte? Ведь на него нельзя же сразу завести несколько плотов.
3. В прилагаемом примере параметр width что конкретно характеризует никак не могу понять? Понятно что ширину на которой ищутся пики, но какой
она должна быть в контексте числа точек сигнала?
Требуется вычислить пики этого сигнала - один "горб" - один пик. А потом вычислить расстояние по Х между этими пиками, здесь кое-что наработал.
Вопросы:
1. У пик-детекторов имеется параметр threshold. Во многих экземплах он задается курсором по горизонтальной оси. Причем на Graphe. А у меня
сигнал течет по Chart, где курсор создать нельзя. Но если к чарту создать дополнительный Graph, то на нем в свою очередь будет отображаться
только один горб сигнала. В контрол забивать значение границы тоже не очень удобно. Как можно наглядно решить эту проблему?
2. Как пометить отыскиваемые пики на том же charte? Ведь на него нельзя же сразу завести несколько плотов.
3. В прилагаемом примере параметр width что конкретно характеризует никак не могу понять? Понятно что ширину на которой ищутся пики, но какой
она должна быть в контексте числа точек сигнала?
Последний раз редактировалось Kvanto 18 янв 2013, 15:16, всего редактировалось 1 раз.
-
Jakob Brontfeyn
- expert
- Сообщения: 1729
- Зарегистрирован: 28 фев 2008, 11:01
- Награды: 6
- Благодарил (а): 1 раз
- Контактная информация:
Re: Пик детектор в реальном времени
математика:
пик определяется по первой производной она равна нулю,
(или реально ищется точка перехода через 0)
пик это, или впадина определяется по второй производной
соответственно она < или > нуля.
Поэтому необходимо как минимум 3 точки в "околопиковой"
области.
Для сильнозашумленных сигналов испольсование алгоритма
пик-детектора вообще проблематично, я применяю просто поиск
максимума и минимума в массиве.
цитата:
2. Как пометить отыскиваемые пики на том же charte? Ведь на него нельзя же сразу завести несколько плотов.
цитата:
сигнал течет по Chart, где курсор создать нельзя
Это заблуждение, можно
пик определяется по первой производной она равна нулю,
(или реально ищется точка перехода через 0)
пик это, или впадина определяется по второй производной
соответственно она < или > нуля.
Поэтому необходимо как минимум 3 точки в "околопиковой"
области.
Для сильнозашумленных сигналов испольсование алгоритма
пик-детектора вообще проблематично, я применяю просто поиск
максимума и минимума в массиве.
цитата:
2. Как пометить отыскиваемые пики на том же charte? Ведь на него нельзя же сразу завести несколько плотов.
цитата:
сигнал течет по Chart, где курсор создать нельзя
Это заблуждение, можно
Re: Пик детектор в реальном времени
Да мой сигнал вообще не зашумлен практически. Он достаточно гладкий. Максимум и минимум...Jakob Brontfeyn писал(а): Для сильнозашумленных сигналов испольсование алгоритма
пик-детектора вообще проблематично, я применяю просто поиск
максимума и минимума в массиве.
думаю эти функции работы с массивами придется немного подгонять под вход след. функции, которая высчитывает
расстояние между пиками. А вот всякого рода Peak Detection.vi более под это адаптированы.
подскажите какJakob Brontfeyn писал(а): Это заблуждение, можно
P.S. C шириной я вроде разобрался. Только вот не могу расстояние между пиками вычислить в примере. Массив нулями заполняется.
-
Jakob Brontfeyn
- expert
- Сообщения: 1729
- Зарегистрирован: 28 фев 2008, 11:01
- Награды: 6
- Благодарил (а): 1 раз
- Контактная информация:
Re: Пик детектор в реальном времени
вот, я тут немного дополнил пример пик-детектора,
посмотрите, может что то можно будет применить
посмотрите, может что то можно будет применить
- Вложения
-
- Peak_kvanto.vi
- (129.5 КБ) 242 скачивания
-
Jakob Brontfeyn
- expert
- Сообщения: 1729
- Зарегистрирован: 28 фев 2008, 11:01
- Награды: 6
- Благодарил (а): 1 раз
- Контактная информация:
Re: Пик детектор в реальном времени
еще один, совсем простой пример визуализации пиков
входной сигнал изменяется вручную слайдером
входной сигнал изменяется вручную слайдером
- Вложения
-
- Input_manuel_peaks.vi
- (34.08 КБ) 219 скачиваний
Re: Пик детектор в реальном времени
Да, Яков, хорошая идея со скроллом. Подцепил данный алгоритм к своему сигналу, но к сожалению,Jakob Brontfeyn писал(а):вот, я тут немного дополнил пример пик-детектора,
посмотрите, может что то можно будет применить
детектор отлавливает то три, два пика на одном горбу, а то вообще не может поймать. От чего это может зависеть?
Пробовал варьировать параметром PD width но без результатно, от границы threshold это тоже на мой взгляд не зависит, ее изменял.
Теперь до понедельника откладываю.
-
Jakob Brontfeyn
- expert
- Сообщения: 1729
- Зарегистрирован: 28 фев 2008, 11:01
- Награды: 6
- Благодарил (а): 1 раз
- Контактная информация:
Re: Пик детектор в реальном времени
еще один симулированный пример на базе sinh
- Вложения
-
- sinh_peaks.vi
- (45.59 КБ) 210 скачиваний
Re: Пик детектор в реальном времени
И все-таки загадкой остается почему некоторые пики отыскиваются, некоторые нет, а на некоторых участках сразу несколько пиков.
Пробовал все предложенные Яковом алгоритмы. Может это как-то связано с частотой дискретизации сигнала? Например, если пиковых
точек слишком много, он будет некорректно их отлавливать...это моё предположение.
Пробовал все предложенные Яковом алгоритмы. Может это как-то связано с частотой дискретизации сигнала? Например, если пиковых
точек слишком много, он будет некорректно их отлавливать...это моё предположение.
-
Jakob Brontfeyn
- expert
- Сообщения: 1729
- Зарегистрирован: 28 фев 2008, 11:01
- Награды: 6
- Благодарил (а): 1 раз
- Контактная информация:
Re: Пик детектор в реальном времени
что то тут не так, то что пиков два в одной картинке,
так это и глазом видно,что там 2 пика это правильно и алгоритм работает,
а вот то что совсем не определяется не понимаю, как то неправильно сигнал подается.
так это и глазом видно,что там 2 пика это правильно и алгоритм работает,
а вот то что совсем не определяется не понимаю, как то неправильно сигнал подается.
Re: Пик детектор в реальном времени
Вообще занимался этим целый день, но какой-никакой а результат получился. Я пришел к выводу что те детекторы,
которые отлавливают в моем случае несколько пиков на одном "горбу" мне не подходят, ввиду того что меня
интересует именно время между двумя горбами.
Воспользовался функцией "Online Multiscale peak Detection".
В базовом наборе ее нет, она идет вместе со всеми вейвлет функциями. Внутрь нее лучше не заглядывать, потом
ночь будете плохо спать), но она мне подошла тем что на одном горбу она выделяет именно один пик. И к тому же
к ней, как показано в примере пристегивается целый Extract Heart Rate. Его я не смог корректировать и взял таким
какой есть.
В итоге моя программа и девайс сейчас позволяет с помощью датчика на основе оптопары,который одевается на палец, завести этот сигнал на одну из
плат сбора данных NI. И получить лабораторный пульсометр. С собой его не потаскаешь конечно...но сидя на стуле пульс запишет.
которые отлавливают в моем случае несколько пиков на одном "горбу" мне не подходят, ввиду того что меня
интересует именно время между двумя горбами.
Воспользовался функцией "Online Multiscale peak Detection".
В базовом наборе ее нет, она идет вместе со всеми вейвлет функциями. Внутрь нее лучше не заглядывать, потом
ночь будете плохо спать), но она мне подошла тем что на одном горбу она выделяет именно один пик. И к тому же
к ней, как показано в примере пристегивается целый Extract Heart Rate. Его я не смог корректировать и взял таким
какой есть.
В итоге моя программа и девайс сейчас позволяет с помощью датчика на основе оптопары,который одевается на палец, завести этот сигнал на одну из
плат сбора данных NI. И получить лабораторный пульсометр. С собой его не потаскаешь конечно...но сидя на стуле пульс запишет.
Re: Пик детектор в реальном времени
Kvanto, а давайте посмотрим на сигнал, взятый из программы "Peak_pulset_wave.vi" из вкладки "EKG" и сравним с данными из программы Jakob Brontfeyn "Peak Kvanto".
В ваших данных, верхний рис., зависимость имеет ступенчатый вид и данные в массиве имеют всего 3 знака после запятой. А максимум и минимум зависимости - 0,02-0,03 по модулю. Т.е. вы имеете 50-60 уровней по амплитуде и чтобы добиться от стандартной функции "Peak Detector" корректной работы нужно параметр width брать достаточно большим.
Возможно, малая точность измеренных данных связана с характеристиками АЦП. Однако, на мой взгляд, дело может быть не в этом.
Начало своих изысканий вы привели в этой теме http://www.labviewportal.eu/viewtopic.php?f=81&t=4630, в которых вы использовали фильтр.
Мне кажется, что убирая фильтрами низкочастотную составляющую, вы сильно трансформировали сигнал и зарезали его по амплитуде. И делать после этого поиски максимумов - очень сомнительно.
Теперь посмотрим на ваш последний результат. По рисунку видно, что найденные точки максимумов расположены несколько левее от самого экстремума. Причем это отклонение непостоянно по величине. Этим вы дополнительно вносите погрешность в определение значения пульса.
Но если вас удовлетворяет точность плюс-минус удар сердца - вы получили решение.
Честно говоря, данные Якова более похожи на кардиограмму чем ваши.В ваших данных, верхний рис., зависимость имеет ступенчатый вид и данные в массиве имеют всего 3 знака после запятой. А максимум и минимум зависимости - 0,02-0,03 по модулю. Т.е. вы имеете 50-60 уровней по амплитуде и чтобы добиться от стандартной функции "Peak Detector" корректной работы нужно параметр width брать достаточно большим.
Возможно, малая точность измеренных данных связана с характеристиками АЦП. Однако, на мой взгляд, дело может быть не в этом.
Начало своих изысканий вы привели в этой теме http://www.labviewportal.eu/viewtopic.php?f=81&t=4630, в которых вы использовали фильтр.
Мне кажется, что убирая фильтрами низкочастотную составляющую, вы сильно трансформировали сигнал и зарезали его по амплитуде. И делать после этого поиски максимумов - очень сомнительно.
Теперь посмотрим на ваш последний результат. По рисунку видно, что найденные точки максимумов расположены несколько левее от самого экстремума. Причем это отклонение непостоянно по величине. Этим вы дополнительно вносите погрешность в определение значения пульса.
Но если вас удовлетворяет точность плюс-минус удар сердца - вы получили решение.
Re: Пик детектор в реальном времени
естественно, у меня же пульсовая волна, а Яков привел ЭКГ. ЭКГ обусловленно электрическими потенциалами сердца,IORIK писал(а): Честно говоря, данные Якова более похожи на кардиограмму чем ваши.
а пульсовая волна получается просветкой оптопарой кровеносных сосудов.
кстати да. АЦП у меня 16 битное. Вх. диапазон варьируется с максимумом 10 В. Получается разрешение 0,0002 В. Как раз где-то то, что у меня имеется.IORIK писал(а): В ваших данных, верхний рис., зависимость имеет ступенчатый вид и данные в массиве имеют всего 3 знака после запятой. А максимум и минимум зависимости - 0,02-0,03 по модулю. Т.е. вы имеете 50-60 уровней по амплитуде и чтобы добиться от стандартной функции "Peak Detector" корректной работы нужно параметр width брать достаточно большим.
Возможно, малая точность измеренных данных связана с характеристиками АЦП.
в похожей теме я советовался по поводу построения детектора как раз для ЭКГ сигнала. Там я преобразовал сигнал. Брал от него производную, фильтровал и возводил в квадрат.IORIK писал(а): Однако, на мой взгляд, дело может быть не в этом.
Мне кажется, что убирая фильтрами низкочастотную составляющую, вы сильно трансформировали сигнал и зарезали его по амплитуде. И делать после этого поиски максимумов - очень сомнительно.
С этим же сигнал такого пока сделать не смог. А вообще a качестве фильтров я мог обойтись одним ФВЧ, без ФНЧ, но и при этом пики отыскиваются с погрешностью.
Re: Пик детектор в реальном времени
Кажется ясно, в чем соль. На этом рисунке пики отлавлиются практически как надо,
он отлавил два пика на горбе, параметр Width=4. А вот на следующем рисунке параметр width=50 и получается
что как-будто пики неправильно определяются. Но если приглядеться, то можно заметить задержку в определении пика
на один такт.
Получается пик то определился точно, а вот на Chart он попал уже не в свое время.
Решение проблемы я нашел в установке низкого значения width в пределах 10. А вот для
того, чтобы не отыскивалось по несколько пиков я сгладил сигнал с помощью Smoothing,
и взял количество точек побольше в райне 30. Сигнал получился гладеньким и без "пупырышек".
лишь в одном месте он отлавил два пика на горбе, параметр Width=4. А вот на следующем рисунке параметр width=50 и получается
что как-будто пики неправильно определяются. Но если приглядеться, то можно заметить задержку в определении пика
на один такт.
Получается пик то определился точно, а вот на Chart он попал уже не в свое время.
Решение проблемы я нашел в установке низкого значения width в пределах 10. А вот для
того, чтобы не отыскивалось по несколько пиков я сгладил сигнал с помощью Smoothing,
и взял количество точек побольше в райне 30. Сигнал получился гладеньким и без "пупырышек".
-
- beginner
- Сообщения: 17
- Зарегистрирован: 03 май 2013, 14:59
- Версия LabVIEW: 8.6
- Контактная информация:
Re: Пик детектор в реальном времени
Здравствуйте, мне необходимо посчитать периоды оцифрованного аналогово сигнала, возникли следующие проблемы: оцифрованный сигнал имеет различные скачки в виде каких то шумов, что затрудняет подсчет пиков, и сигнал постоянно плывет. Как можно убрать эти помехи на сигнале(произвести сглаживание)? И как синхронизовать оцифрованный сигнал, и влияет ли на подсчет максимумов сигнала, то что сигнал постоянно плывет? Программа, в которой я работаю выглядит следующим образом: http://hdd.tomsk.ru/desk/grljmzni#
-
- user
- Сообщения: 96
- Зарегистрирован: 14 июн 2013, 12:50
- Версия LabVIEW: 2012
- Контактная информация:
Re: Пик детектор в реальном времени
Всем доброго времени суток!При просмотре выложенных выше VI, возникает проблема,система не находит нужного Subvi "Peak detector PtByPt.vi".У меня версия прибора 2012,может такого Subvi нет в комплекте,где его можно взять,установить?Заранее спасибо.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 3 Ответы
- 484 Просмотры
-
Последнее сообщение Zloydj