Pull to refresh

Обзор некоторых виртуальных приборов среды LabVIEW в помощь разработчику (+ исходники)

Reading time 3 min
Views 31K
image

Добрый день, всем!

За последние годы работы в среде LabVIEW приходилось иметь дело с разными задачами, решение которых вытекало в создание простых и не очень простых виртуальных приборов(ВП). Специализация моей работы – это проектирование различных алгоритмов для анализа биомедицинских сигналов. И как у любого разработчика за несколько лет у меня накопилось большое количество кода разной сложности. Для всех виртуальных приборов, которые по той или иной причине мне жалко было удалять, я создал папку, куда и сохранял все. В данной статье мне хотелось бы привести некоторую выборки из моего LabVIEW-портфолио.

Выборка имеет достаточно эклектичный характер, и многие приборы опытные разработчики могут воспроизвести сами за несколько минут. Поэтому, полагаю данная статья может пригодится в основном для начинающих LabVIEW-разработчиков. Большинство представленного кода можно так или иначе найти на LabVIEW – форумах или в экземплах среды. Исходники прилагаю в конце статьи (версия 9.0).

В начале хотелось бы привести пару ВП, которые относятся к разряду очень простых, но возможно кому-то необходимых.

Нормализация сигнала


В LabVIEW есть встроенная функция нормализации сигнала Normalization.vi, но ее работа нас не удовлетворила, поскольку неясно было, как получить на ее выходе массив в жестко заданных пределах. В итоге был разработан подприбор, в данном случае реализующий нормализацию входного массива в значениях от 0 до 100. Согласитесь, это иногда необходимо.

image

Удаление нулей из массива


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

image

Чтение данных с Bluetooth — устройства.


Данный прибор был заимствован на ni.com, когда стояла задача приема данных с нагрудного датчика фирмы Polar. Пользователь англоязычного форума успешно реализовал код получения данных с устройства, но раскодирование BT-строки и перевод ее в значения пульса пришлось немного модернизировать. Топик можно просмотреть здесь. Помимо датчика пульса к виртуальному прибору успешно подсоединялось и другое BT-устройство.

image

Конвертирование видео в графические файлы


Как-то приходилось обрабатывать видеоизображение в LabVIEW, но используемые коды не были адаптированы для открытия видеоизображения, а считывали последовательность графических файлов. Поэтому был найден полезный прибор, переводящий видео в JPEG – картинки.

image
image

Запуск VLC плеера из LabVIEW


При решении проблемы запуска видео в ходе работы прибора, например, при нажатии кнопки, я искал удобную реализацию, но встроенный в LabVIEW Windows Media Player показал нестабильную работу. Тогда взгляд остановился на использовании решения на базе платформы .NET с подключением внешнего VLC плеера. Работает достаточно стабильно и используется в настоящее время в составе программы для лабораторных исследований.

image

Сплайн-интерполяция сигнала


Часто в задачах цифровой обработки сигналов требуется производить процедуру интерполяцию. Иногда, потому что исходный сигнал слишком «угловатый» или тогда, когда для удобства отображения на графическом индикаторе требует бо’льшего количества точек сигнала. Попросту если из 10 точек сигнала надо сделать 100 такая процедура как раз и применяется. В своих ВП очень часто я прибегал к сплайн-интерполяции, немного разглаживая сигнал и увеличивая количество выборок. Похожую реализацию других видов интерполяции можно найти в примерах среды LabVIEW.

image
image

Нестандартная фильтрация сигнала


При работе с массивами ритмограмм(набор мгновенных значений частоты сердечных сокращений за определенный промежуток времени) возникала проблема удаления артефактов/аномальных значений, возникающих ввиду различных причин при записи пульса. Одним из возможных решений удаления таких выбросов из исходного массива является нижеприведенный прибор. На вид код не является простым, но по сути он реализует процедуру линейного соединения двух соседних чисел между которыми был найден выброс. А затем отыскивается середина этого отрезка, на которое и заменяется найденное аномальное значение. Если встречаются два соседних артефакта, тогда берем и соединяем их крайних соседей. И делим отрезок не на две, а на три части и т.д.

image
image

Линейная аппроксимация случайных чисел


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

image
image

В завершении статьи хотелось бы особенно поблагодарить всех тех людей, которые помогали мне в решении многих, порой непростых задач. Особенно хотелось бы выразить слова благодарности сообществу LabVIEW Portal за бесценную помощью в реализации множества алгоритмов и моем профессиональном возрастании.

Исходные файлы приборов
Tags:
Hubs:
+11
Comments 17
Comments Comments 17

Articles