- •Занятие 4. Построение виртуального прибора, реализующего периодический сигнал с шумом
- •4.1. Создание VI – генератора синусоидального сигнала
- •4.2. Исследование биения частот
- •4.3. Исследование влияния шума на периодический сигнал
- •4.4. Запись данных в файл
- •Занятие 5. Ввод и вывод данных
- •5.1. Работа со строковыми переменными
- •5.2. Запись числовых данных
- •5.3. Считывание числовых данных
- •Занятие 6. Реализация прибора свертки функций
- •6.1. Свертка функций
- •6.2. Моделирование виртуального прибора
- •6.3. Исследование работы свертки
- •Занятие 7. Формулы, массивы, циклы. Функция гаусса
- •7.1. Структуры в LabView
- •7.2. Цикл For
- •Шаблон массива
- •Тип элементов
- •Массива не задан
- •7.3. Представление массивов данных
- •7.4. Считывание значений с графика. Узел Property Node
- •Занятие 8. Дифференцирование и интегрирование в labview
- •8.1. Численное дифференцирование
- •8.2. Численное интегрирование
- •Занятие 9. Интерполяция данных
- •9.1. Задание исходного массива
- •9.2. Использование структуры Sequence
- •9.3. Интерполяция полиномом
- •9.4. Интерполяция дробно-рациональной функцией
- •9.5. Сплайн-интерполяция
- •Занятие 10. Быстрое преобразование фурье. Фильтрация шумящих данных
- •10.1. Алгоритм быстрого преобразования Фурье
- •10.2. Фурье-образ шумящего периодического сигнала
- •10.3. Аподизация верхних частот Фурье-разложения
- •10.4. Фильтрация шумящей функции Гаусса
- •Занятие 11. Расчет фракталов. Экранная лупа
- •11.1. Построение фрактальной кривой
- •11.2. Самоподобие фрактала. Экранная лупа
- •Занятие 12. Примеры фильтрации шумящих экспериментальных данных
- •Занятие 13. Обращение свертки. Вычитание аппаратной функции
- •13.1. Свертка функций
- •13.2. Реализация обращения свертки
- •Занятие 14. Моделирование двухстробового интегратора
- •14.1. Принцип двухстробового интегратора
- •14.2. Генерация массива данных нестационарной емкостной спектроскопии
- •14.3. Построение VI, реализующего двухстробовый метод dlts
- •Занятие 15. Встраиваемые платы сбора и обработки информации. Цифровая плата pc-dio-96
- •15.1. Устройства связи с объектом
- •15.2. Конфигурирование платы сбора и обработки информации
- •15.3. Определение области адресов памяти, занимаемой daq-платой
- •15.4. Функциональная схема платы цифрового ввода-вывода pc-dio-96
- •Занятие 16. Пример построения информационно-измерительной системы с использованием технологии виртуальных приборов
- •16.1. Блок-схема установки c-V-измерений
- •16.2. Двоично-десятичная система счисления
- •16.3. Тестирование информационно-измерительной системы
Занятие 8. Дифференцирование и интегрирование в labview
Цель работы: построение виртуального прибора, реализующего наиболее часто используемые операции с массивами: численное дифференцирование и численное интегрирование. В качестве примера используется функция Гаусса
.
8.1. Численное дифференцирование
Получите массив значений функции Гаусса в заданном интервале (4) с помощью узлов блок-диаграммы Formula Node и For Loop. Для этого удобно воспользоваться виртуальным прибором, созданным на занятии 7.
Н а блок-диаграмме расположите стандартный виртуальный прибор Derivative x(t).vi (Производная) из палитры Mathematics >> Integ&Diff. Получите терминалы Derivative_x(t).vi, включив окно помощи (Help >> Show Context Help). На вход этого VI подается одномерный массив (Х).
Численное дифференцирование осуществляется по известной формуле центральной разности
,
где dt – шаг дифференцирования; i = 0, …, n – 1. На выходе VI формируется массив значений производной. Обычно при дифференцировании с использованием формулы центральной разности значения производных в крайних точках диапазона не определены. В LabVIEW существует возможность получить значения и на границах. Для этого используются “запредельные” значения (initial condition x–1 и final condition xn). По умолчанию они равны 0, но могут быть заданы иными для минимизации ошибок и обеспечения гладкости производной на краях. Таким образом, выходной массив производных имеет длину, равную длине входного массива Х.
Шаг дифференцирования dt задайте равным шагу, использованному при расчете функции Гаусса. Неточное значение шага приведет к потере количественной информации (фактически, к умножению значений производной на константу).
Используя элемент XY Graph, выведите на переднюю панель два графика: исходную рассчитанную функцию и результаты дифференцирования.
Запустите VI. На графиках включите Cursor Legend и создайте курсор, привязанный к графику производной. С его помощью зафиксируйте положения экстремумов производной функции Гаусса.
Сохраните виртуальный прибор.
8.2. Численное интегрирование
Схема численного интегрирования в LabVIEW основана на формуле Симпсона для трех узлов
, (8.1)
где i = 0, 1, …, n – 1; n – количество элементов массива. Шаг интегрирования dt должен быть выбран равным шагу, используемому при расчете подынтегральной функции.
Введите в блок-схему стандартный виртуальный прибор Integral x(t).vi из палитры Mathematics >> Integ&Diff. Изучите его терминалы. Входными значениями VI Integral x(t) являются элементы одномерного массива X. В результате интегрирования в LabVIEW получается также одномерный массив (!) одинаковой длины с X, причем собственно определенным интегралом от входного массива в заданных пределах является последний элемент выходного массива VI Integral x(t). Терминалы initial condition x–1 и final condition xn имеют тот же смысл, что и в Derivative_x(t).vi. Они задают “запредельные” значения входного массива Х для возможности использования формулы (8.1) на краях расчетного диапазона. Обычно они не подсоединяются, и по умолчанию х–1 = хn = 0. При необходимости их значения могут быть изменены для уменьшения ошибки интегрирования, особенно при малом количестве точек в массиве Х.
Подсоедините необходимые терминалы к Integral_x(t).vi. Добавьте на лицевую панель третий дисплей и выведите на него результат интегрирования. XY Graph не пригоден для вывода результатов интегрирования (почему?), поэтому используйте в данном случае Waveform Graph.
Поскольку на выходе Integral_x(t).vi появляется массив монотонно возрастающих чисел, то для получения значения самого интеграла удобно применить функцию Array Max & Min (поиск максимума и минимума в массиве) из палитры Programming >> Array.
Как проинтегрировать функцию в заданных пределах с помощью виртуального прибора Integral_x(t).vi?
Integral_x(t).vi работает со всем входящим в него массивом, как с единым целым. Поэтому следует обеспечить ввод в Integral_x(t).vi требуемого подмассива из всей совокупности значений подынтегральной функции. Позиционируйте курсор точно на проводнике, соответствующем входящему в интеграл массиву Х. Далее щелкните правой кнопкой и выберите I nsert >> Array Palette >> Array Subset. Этот инструмент выделяет подмассив (sub-array) заданной длины (length) из входящего массива, начиная с заданного индекса (index(0)). Восстановите нарушенные соединения. Значения index(0) и length можно задавать с лицевой панели.
Получите диапазоны интегрирования автоматически (по аналогии с 7.4), используя Property Node для XY Graph, содержащего график производ-ной. Чтобы получить индексы считанных курсором с дисплея элементов массива, используйте свойство Cursor >> Cursor Index с включенным Lock to plot). Тогда длина подмассива length будет равна разности индексов элементов, выбранных двумя разными курсорами.
Сохраните разработанный VI.
Получите значение интеграла от функции Гаусса в диапазоне между экстремумами производной, а также в диапазонах 3; 2.
Составьте отчет по лабораторной работе. Когда при численном интегрировании с помощью Integral_x(t).vi использование функции Array Max & Min некорректно?