Использование автоматического индексирования — КиберПедия 

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Использование автоматического индексирования

2022-09-15 33
Использование автоматического индексирования 0.00 из 5.00 0 оценок
Заказать работу

Цикл с фиксированным числом итераций и цикл по условию могут автоматически поочередно обращаться к элементам входящего массива или накапливать новый массив на выходе, добавляя элементы по одному. Эта способность называется автоиндексированием (auto-indexing).

Следует помнить одну важную вещь: по умолчанию автоиндексирование включено в цикле с фиксированным числом итераций и выключено в цикле по условию. Включить или отключить автоиндексирование можно путем выбора опций Включить/Отключить индексирование (Enable/Disable Indexing) в контекстном меню цикла.

Сбор массива циклом. Каждая итерация цикла с фиксированным числом итераций автоматически создает элемент массива в его границах. После завершения цикла выходной массив поступает на элемент отображения. Данные в массиве недоступны до тех пор, пока цикл не завершится. Проводник данных массива при этом толще.

На рис. 10, а показан пример автоиндексации циклом с фиксированным числом итераций одномерного массива. Случайное число в диапазоне от нуля до единицы, выводится из цикла с помощью функции Случайное число (Random Number), расположенной в Function –>> Programming –>> Numeric. Автоиндексирование туннеля (Auto-Indexed Tunnel) осуществляется когда туннель открыт и принимает вид, представленный на рис. 10, а.

 

 

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

Для создания двумерного массива применяют два цикла с фиксированным числом итераций, один внутри другого. Внутренний цикл создает строку, а внешний складывает эти строки для заполнения столбцов массива. На рис. 10, б показаны два цикла с фиксированным числом итераций, которые создают двумерный массив случайных чисел с применением автоиндексирования. Обратите внимание, что проводник двумерного массива снова изменился.

Чтобы не путаться в порядке обращения к элементам, запомните простое правило: Новая размерность всегда идет впереди, т.е. сначала указывается номер столбца (одномерного массива), потом строки (например, 6x4, число четыре идет впереди (справа) числа шести).

Разбор массива на элементы циклом. Автоиндексирование применяется также в случаях, когда вводится массивы в циклы. Если индексирование включено (Auto-Indexing Enabled), как это показано на рис. 11, а, то цикл будет переходить к следующему индексу массива при каждой итерации (обратите внимание на утончение проводника в цикл). Это позволяет разбирать массивы на элементы.

 

а)                                      б)

Рис. 11

 

Если же индексирование отключено (Auto-Indexing Disabled), как показано на рис. 11, б, то массив целиком передается в цикл.

Использование автоиндексирования для установки количества повторений циклов с фиксированным числом итераций. Автоиндексирование для массива, входящего в цикл с фиксированным числом итераций, LabVIEW автоматически устанавливает число повторений равным размеру массива, устраняя таким образом необходимость подключения определенного значения к терминалу числа итераций. Если размер массива равен пяти (Array Size = 5), а число, подключенное к терминалу цикла равен  (рис. 11, а), то размер массива как меньшее из двух чисел, определяет количество итераций цикла.

Индексация нескольких массивов в одном цикле. В случае индексации нескольких массивов различной длины число итераций цикла будет равно наименьшему значению размера массива, когда на вход терминала N подано число большее размеров массивов. Так, например, если циклом индексируются два массива различной длины (2 и 3 элемента), а на терминал общего числа итераций подано число 4, то цикл выполнится 2 раза, по числу элементов наименьшего массива.

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

 

Пример 3 «ВП для сбора массива циклом». Создайте ВП развернутый одномерный и двумерный массивы констант с компактными индикаторами 1D и 2D массивов. Лицевая панель ВП приведена рис. 12, а.

 

   

а)                                     б)

Рис. 12

 

Решение. Структурная схема ВП представлена на рис. 12, б.

Задание. Опишите последовательность создания ВП (алгоритм).

 

Пример 4 «ВП для разбора массива на элементы». Создайте ВП развернутый одномерный и двумерный массивы констант с компактными индикаторами 1D и 2D массивов. Лицевая панель ВП приведена рис. 13, а.

 

а)                                                       б)

Рис. 13

 

Решение. Структурная схема ВП представлена на рис. 13, б.

Задание. Опишите последовательность создания ВП (алгоритм).

 

Функции работы с массивами

LabVIEW имеет много функций для формирования и управления массивами, которые подразделяются на основные и дополнительные. Все они расположены в подпалитре Programming –>> Array палитры Функции и представлены на рис. 14. К основным относятся первые восемь из них.

 

 

Рис. 14

 

Основные функции для работы с массивами. Рассмотрим подробнее некоторые основные функции, краткое описание которых приведено в табл. 3.

Таблица 3

Вид Назначение основных ф ункций
  Array Size (Число элементов массива) - возвращает вектор размеров массива. Если массив n - мерный, на выходе функции Array Size будет вектор из n элементов. Так для одномерного массива из трех элементов функция Array Size выдаст значение 3, для двухмерного размером 5 х 10 результатом функции будет вектор из двух элементов 5 и 10.  
    Index Array (Выборка из массива) - выдает элемент, соответствующий индексу, значение которого подается на поле ввода index. Функцию Index Array можно использовать для выделения строки или столбца из двумерного массива и дальнейшего представления в виде подмассива. Для этого надо подать двумерный массив на поле ввода данных функции. Функция Index Array должна иметь два поля index. Верхнее поле index указывает строку, а нижнее поле - столбец. Можно задействовать оба поля index для выбора отдельного элемента или только одно поле, для выбора строки или столбца.  
  Replace Array Subset (Заменить подмассив)- заменяет часть массива, т.е. помещает значение или массив, поданный на терминал new element/subarray в исходный массив по координатам в полях index. Если не присоединять значений к терминалам index для какой-нибудь координаты, то будут заменены все элементы по этой координате. Выходной массив будет иметь одинаковую размерность со входным.  
  Insert Into Array (Вставить в массив) - вставляет элемент или массив в исходный массив по координатам указанным в полях index. Если не присоединить проводники к терминалам index, то новые элементы добавятся в конец массива.  
  Initialize Array (Инициализировать массив) - создает массив заданной размерности, в котором каждый элемент инициализирован значением поля ввода данных element. Для увеличения размерности массива достаточно добавить поля ввода данных, растянув узел функции. Например, если для функции Initialize Array заданы следующие значения параметров: на поле element подается значение 2, а на поле dimension size значение 3, то на выходе получится одномерный массив, состоящий из трех элементов равных 2.  
  Build Array (Сформировать массив) - объединяет несколько массивов или добавляет элемент в n -мерный массив. Изменение размера иконки функции увеличивает количество полей ввода данных, что позволяет увеличить количество добавляемых элементов.
  Array Subset (Сформировать подмассив) - выдает часть массива, начиная с индекса, поступившего на поле index, и длиной, указанной в поле length. Когда вы присоединяете массив к этой функции, узел меняет размер, автоматически создавая пару терминалов index и length для каждой координаты массива.

 

Пример 5 «ВП для определения размера массива». Создайте ВП для определения размеров одномерного 1D, двумерного 2D и трехмерного 3D массивов на основе функции Array Size (Число элементов массива, размер массива), которая определяет вектор размеров массива. Если массив n - мерный, на выходе функции Array Size будет вектор из n элементов. Так для одномерного массива из трех элементов функция Array Size выдаст значение 3, для двухмерного размером 5 х 10 результатом функции будет вектор из двух элементов 5 и 10.

Лицевая панель и структурная схема ВП приведены на рис. 15.

 

а)                                 б)

Рис. 15

 

Задание. Исследуйте функцию Array Size на основе разработанного ВП. Опишите последовательность создания ВП (алгоритм).

 

Пример 6 «ВП для разбора массива на элементы и подмассивы». Функция Index Array (Выборка из массива) осуществляет доступ к любому элементу массива, а также может быть использована для создания подмассива. Например, из двумерного массива можно формировать массив строки, столбца или скалярного элемента. Чтобы формировать скалярный элемент необходимо указать индекс строки и столбца, а для формирования строки или столбца один из вводов функции index остается неподключенным. При формировании строки двумерного массива необходимо соединить значение индекса выбранной строки с первым индексным вводом функции, а при формировании столбца – со вторым индексным вводом функции.

Создайте три ВП с 1D, 2D и 3D массивами соответственно для разбора массивов на элементы и подмассивы. Лицевая панель и структурная схема ВП приведены на рис. 16.

Задание. Исследуйте функцию Index Array на основе разработанного ВП. Опишите алгоритм создания ВП.

 

 

                                                                                                                  

а)                              б)

Рис. 16

 

Пример 7 «ВП для перевода десятичного числа в двоичное на основе функции Index Array (Выборка из массива)». Функция Выборка из массива позволяет вырезать строку из двумерного массива. Для этого на первый индексный вход функции Выборка из массива подают индекс выбранной строки, а второй индексный вход оставляют неподключенным.

Решение. Пусть, например, требуется преобразовать целые числа от 0 до 7 в двоичную форму. Для представления восьми десятичных чисел в двоичной форме необходимо иметь три разряда (). Составим таблицу перевода чисел (Табл. 3).

 

Таблица 4

Десятичное число Двоичное представление
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111

 

Структурная схема ВП представляется в виде трех последовательно включенных узлов: массив -Index Array – индикатор. Для выбора строки массива используется элемент управления - задачик десятичного числа. Представим двоичное представление десятичных чисел в двоичный массив констант размером 3х8. Лицевая панель и структурная схема ВП приведены на рис. 17.

 

а)                                                  б)

Рис. 17

 

Задание. Опишите алгоритм создания ВП.

 

Пример 8 «ВП для замены подмассива или значения элемента массива». Лицевая панель и структурная схема ВП приведены на рис. 18.

 

а)                                     б)

Рис. 18

 

Функция Replace Array Subset (Заменить подмассив) помещает значение или массив, поданный на терминал new element/subarray в исходный массив по координатам в полях index. Если не присоединять значений к терминалам index для какой-нибудь координаты, то будут заменены все элементы по этой координате. Выходной массив будет иметь одинаковую размерность со входным.

Задание. Исследуйте функцию Replace Array Subset на основе разработанного ВП. Опишите алгоритм создания ВП.

 

Пример 9 «ВП для формирования новых массив». ВП формирует массивы на основе функций Insert Into Array (Вставить в массив) и Build Array (Сформировать массив). Функция Insert Into Array (Вставить в массив) - вставляет элемент или массив в исходный массив по координатам указанным в полях index. Если не присоединить проводники к терминалам index, то новые элементы добавятся в конец массива. Функция Build Array (Сформировать массив) - объединяет несколько массивов или добавляет элемент в n -мерный массив. Изменение размера иконки функции увеличивает количество полей ввода данных, что позволяет увеличить количество добавляемых элементов.

Лицевая панель и структурная схема ВП приведены на рис. 19.

 

а)                                     б)

Рис. 19

 

Задание. Исследуйте функции Insert Into Array и Build Array основе разработанного ВП. Опишите алгоритм создания ВП.

 

Пример 10 «ВП для инициализации массива». ВП формирует массивы на основе функции Initialize Array (Инициализировать массив). Функция Initialize Array (Инициализировать массив) - создает массив заданной размерности, в котором каждый элемент инициализирован значением поля ввода данных element. Для увеличения размерности массива достаточно добавить поля ввода данных, растянув узел функции. Например, если для функции Initialize Array заданы следующие значения параметров: на поле element подается значение 1, а на поле dimension size значение 3, то на выходе получится одномерный массив, состоящий из трех элементов, равных 1. Если заданы element = 2, dimension size 2 = 3 и dimension size 3 = 3, то получится двумерный массив, состоящий из 3х3 элементов, равных значению 2.

Лицевая панель и структурная схема ВП приведены на рис. 20.

 

а)                                       б)

Рис. 20

 

Задание. Исследуйте функцию Initialize Array на основе разработанного ВП. Опишите алгоритм создания ВП.

 

Пример 11 «ВП для формирования подмассива на основе функции Array Subset». Функция Array Subset (Сформировать подмассив) - выдает часть массива, начиная с индекса, поступившего на поле index, и длиной, указанной в поле length. Когда вы присоединяете массив к этой функции, узел меняет размер, автоматически создавая пару терминалов index и length для каждой координаты массива.

Лицевая панель и структурная схема ВП приведены на рис. 21.

 

а)                                                  б)

Рис. 21

 

Задание. Исследуйте функцию Array Subset на основе разработанного ВП. Опишите алгоритм создания ВП.

 

Пример 12 «ВП для перевода целого десятичного числа в двоичный код на основе функции Number To Boolean Array». Основной недостаток ВП, приведенного в примере 7, сложность формирования массива с увеличением числа разрядов двоичного числа. Функция Number To Boolean Array (преобразующая целое число в двоичный код в виде массива логических переменных) позволяет наиболее просто решать поставленную задачу. Проверку правильности преобразования чисел можно выполнить на основе обратной функции Boolean Array To Number. Эти две взаимообратные функции расположены в подпалитре Boolean палитры Functions. Лицевая панель и структурная схема ВП приведены на рис. 22.

 

а)                                                  б)

Рис. 22

 

Задание. Исследуйте функции Number To Boolean Array и Boolean Array To Number на основе разработанного ВП (рис. 22). Опишите алгоритм создания ВП.

 

Полиморфизм

Другим полезным качеством LabVIEW является полиморфизм (polymorphism) его арифметических функций: Сложения (Add), Умножения (Multiply), Деления (Divide) и т. д. Полиморфизм - это длинное слово для названия простого принципа: входные данные функций могут иметь различные размерности и представления. Например, используя одну и ту же функцию, вы можете сложить скалярную величину и массив или сложить два массива. На рис. 23 показаны некоторые полиморфические комбинации функции Сложения.

 

а)                                             б)

Рис. 23

 

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

 

Составная арифметика

Имея дело с арифметикой, необходимо упомянуть функцию Составная арифметика (Compound Arithmetic), расположенная в подпалитре Numeric палитры Functions (рис. 24). Эта функция дает возможность оперировать более чем двумя числами одновременно. Для этого необходимо увеличить ее размер и создать больше вводов (рис. 24).

 

Рис. 24

 

Эта функция имеет только одну форму. Чтобы изменить вид действия (из набора Сложение, Умножение, И, ИЛИ и Исключающее ИЛИ), щелкните правой кнопкой мыши по выводу функции и выберите опцию Сменить режим (Change Mode). Вы также можете щелкнуть инструментом управления («палец») по виду действия для его модификации (рис. 24).

Для изменения знака числовых вводов и вывода или логических значений (от ЛОЖЬ до ИСТИНА или наоборот) выберите опцию Инвертировать (Invert) в контекстном меню, как показано на рис. 24. Маленький кружок на вводе или выводе символизирует инвертированное значение.

Составная арифметика устраняет необходимость использования множества терминалов Сложение, Умножение, И, ИЛИ и Исключающее ИЛИ при осуществлении действий с одной из этих функций с несколькими числами одновременно.

Таблица и истинности логических функций представлены в табл. 5 и табл. 6.

Таблица 5

 
Логическое И (AND)
Вход 1 Вход 2 Выход
0 0 0
0 1 0
1 0 0
1 1 1

 

 
Логическое ИЛИ (OR)
Вход 1 Вход 2 Выход
0 0 0
0 1 1
1 0 1
1 1 1

 

 

Таблица 6

Исключающее

ИЛИ (XOR)

Вход 1 Вход 2 Выход
0 0 0
0 1 1
1 0 1
1 1 0

Кластеры

Для группирования различных типов данных предназначены кластеры (Cluster). На блок схеме кластер выглядит как один «толстый провод», по которому передается множество разнотипных данных. Использование кластеров упрощает блок схему и снижает вероятность ошибки при подключении большого числа проводников к ВП. Для формирования и управления кластерами используются функции, расположенные в палитре Cluster, Class & Variant в категории Programming. Основными операциями при формировании кластера являются функции Сборка (Bundle)  и Разделение (Unbundle) , которые позволяют объединять или разъединять соответственно входные и выходные компоненты кластера. Образно можно полагать, что эти функции играют роль своеобразного многоконтактного разъема с пронумерованными контактами.

 


Поделиться с друзьями:

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

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

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.07 с.