Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

конспект Гугнин

.pdf
Скачиваний:
83
Добавлен:
10.02.2016
Размер:
3.18 Mб
Скачать

Лекция 6 Цель лекции – освоить понятие массива данных и изучить основные опе-

раций над ним. Освоить основы техники работы с массивами.

5. МАССИВЫ В СРЕДЕ LabVIEW

Массив – это набор элементов одного типа данных. Элементами массива называют группу составляющих его объектов. Размерность массива - это совокупность столбцов (длина) и строк (высота), а также глубина массива. Массив может быть одномерным (вектор), двумерным (матрица) или многомерным, и содержать до 23 – 1 элементов в каждом направлении (если это позволить объём оперативной памяти).

Данные, составляющие массив, могут быть следующих типов: численные, логические, строковые, графические и кластеры. Массивы удобно использовать при работе с группами данных одного типа и при накоплении данных после повторяющихся вычислений.

Все элементы массива упорядочены. Каждому элементу присвоен индекс, причем нумерация элементов массива всегда начинается с 0. Таким образом, индексы массива находятся в диапазоне от 0 до (n – 1), где n – число элементов

вмассиве.

5.1.Создание массива элементов управления и индикации

Для создания массива элементов управления или индикации данных необходимо выбрать шаблон массива из палитры Controls Modern Array, Matrix & Cluster Array и поместить его на лицевую панель. Затем в шаблон массива поместить элемент управления или индикации данных (см. рис. 5.1). При этом терминал элемента на блок-диаграмме приобретет цвет, соответствующий типу данных элементов массива.

Рис 5.1. Создание массива элементов управления

Поместить элемент в шаблон массива необходимо до того, как он будет использоваться на блок-диаграмме. Если этого не сделать, то шаблон массива не будет инициализирован, и использовать массив будет нельзя.

47

Подобным образом можно создать массив констант. Для этого необходи-

мо выбрать шаблон Functions Programming Array Array Сonstant и по-

местить в него константу необходимого типа.

На лицевой панели массив представляется двумя областями: зона индекса и зона видимости элементов. Сразу после создания массива виден только один элемент.

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

На рис. 5.2 показан массив, состоящий из элементов управления ControlsModern Boolean Rocker. Свойства элементов, входящих в массив, можно редактировать непосредственно в зоне видимости элементов, как если бы элемент управления или индикации находился вне массива. Например, для элементов управления изменить размер (рис. 5.3).

Рис. 5.1. Массив элементов управления

Рис. 5.2. Изменение свойств элементов управления в массиве

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

В зоне индекса задается номер элемента массива, начиная с которого показываются элементы массива в зоне видимости элементов, т.е. индекс левого верхнего отображенного элемента. По умолчанию это значение 0. Это значит, что элементы массива показаны, начиная с нулевого элемента. Изменяя значение индекса можно наблюдать любой последовательный участок массива.

При необходимости, зону индекса можно сделать невидимой. Для этого необходимо щелкнуть ПКМ по окошку индексов и в контекстном меню выбрать пункты Visible Items Index Display. Если зона индексов понадобиться

48

вновь, то её возвращают на лицевую панель выделив массив и щелкнув по нему ПКМ, в контекстном меню выбирают опцию Properties и в открывшемся окне на странице Appearence в окошечке рядом с надписью Show index display щелкают ЛКМ.

5.2. Двумерные массивы

Двумерный (2D) массив представляет собой прямоугольную таблицу (матрицу).

Каждый элемент двухмерного массива характеризуется двумя индексами. Пример двухмерного массива размерностью 5 x 3 показан на рис. 5.3

Рис. 5.3. Двумерный массив 5 х 3

Для увеличения размерности массива необходимо щелкнуть ПКМ по выделенному массиву и выбрать из контекстного меню пункт Add Dimension.

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

Рис. 5.4. Последовательность создания двумерного массива

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

На блок-диаграмме массивы разной размерности соединяются проводниками разной толщины, которая зависит от размерности массива (рис 5.5).

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

49

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

 

 

 

 

в

 

 

б

 

а

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 5.5. Одномерный (а), двумерный (б) и трехмерный (в) массивы

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

Для выполнения простейших математических операций над элементами массива можно использовать стандартные функции, расположенные в палитре

Functions Programming Numeric. Все они являются полиморфными. Это означает, что на поля ввода этих функций могут поступать данные различных типов (скалярные величины, массивы). Например, можно использовать функцию Add для прибавления скалярной величины к массиву или сложения двух массивов. Если на одно поле ввода данных функции Add подать скалярную величину 2, а другое поле соединить с массивом, то функция прибавит 2 к каждому элементу массива.

Если на вход функции Add подать два массива одинаковой размерности, функция сложит каждый элемент первого массива с соответствующим элементом второго. Если с помощью функции Add сложить два массива разного размера, то функция сложит каждый элемент первого массива с соответствующим элементом второго и выдаст результат в виде массива с размером меньшего из двух исходных (рис.5.6).

Рис. 5.6. Сложение массивов

В Lab VIEW, в отличие от большинства языков программирования, для того чтобы производить вычисления с элементами массивов, не потребуется использовать цикл. Большинство функций полиморфны и работают с массивами так же как соскалярными величинами. Например, для вычисления

50

синуса от каждого элемента массива достаточно подать этот массив на вход соответствующей функции (рис. 5.7).

Рис. 5.7. Вычесление синуса от каждого элемента массива

5.4. Основные функции работы с массивами

Для работы с массивами предназначены функции из палитры Functions Programming Array представленные на рис 5.8.

Рис. 5.8. Палитра функций для работы с массивами

Наиболее часто используемые из них приведены в таблице 5.1.

Таблица 5.1. Основные функции работы с массивами

Функция Описание функции

Array Size - возвращает вектор размеров массива. Если массив n – мерный, на выходе функции Array Size будет вектор из n элементов. Так для одномерного массива из трех элементов функция Array Size выдаст значение 3, для двухмерного размером 5 х 10 результатом функции будет вектор из двух элементов 5 и 10.

51

 

Продолжение таблицы 5.1.

Функция

Описание функции

 

Index Array - выдает элемент, соответствующий

 

индексу, значение которого подаётся на поле ввода

 

index. Функцию Index Array можно использовать для

 

выделения строки или столбца из двумерного

 

массива и дальнейшего представления в виде

 

подмассива. Для этого надо подать двумерный

 

массив на поле ввода данных функции. Функция

 

Index Array имеет два поля index. Верхнее поле index

 

указывает строку, а нижнее поле - столбец. Можно

 

задействовать оба поля index для выбора отдельного

 

элемента или только одно поле, для выбора строки

 

или столбца.

 

Replace Array Subset - заменяет часть массива, т.е.

 

помещает значение или массив, поданный на

 

терминал new element/subarray в исходный массив

 

по координатам в полях index. Если не присоединять

 

значений к терминалам index для какой-нибудь

 

координаты, то будут заменены все элементы по

 

этой координате. Выходной массив будет иметь

 

одинаковую размерность и размер со входным.

 

Insert Into Array - вставляет элемент или массив в

 

исходный массив по координатам указанным в полях

 

index. Если не присоединить проводники к

 

терминалам index, то новые элементы добавятся

 

в конец массива.

 

 

Delete From Array - удаляет элементы из массива начиная с номера элемента index и длинной length. На выходе результирующий массив (1) и удаленная часть (2).

Initialize Array - создает n – мерный массив, в котором каждому элементу присваевается значение, заданное на входе element. Для увеличения размерности массива достаточно добавить поля ввода данных, растянув узел функции. Например, если для функции Initialize Array заданы следующие значения параметров: на поле element подается значение 4, а на поле dimension size значение 3, то на выходе получится одномерный массив, состоящий из трех элементов равных 4.

52

Продолжение таблицы 5.1.

Функция Описание функции

Build Array - объединяет несколько массивов или добавляет элемент в n – -мерный массив. Изменение размера иконки функции увеличивает количество полей ввода данных, что позволяет увеличить количество добавляемых элементов. Например, можно получить из двух одно-мерных массивов двумерный:

Для объединения входных данных в массив той же размерности достаточно щелкнуть ПКМна функции и выбрать из контекстного меню пункт Concatenate

Inputs.

Array Subset - выдает часть массива, начиная с индекса, поступившего на поле index, и длиной, ука-

1занной в поле length. Когда массив присоединяется к этой функции, узел меняет размер, автоматически создавая пару терминалов index и length для каждой координаты массива.

Rotate 1D Array - при N > 0 перемещает n последних элементов одномерного массива в начало, а остальные сдвигает вправо на N, при N < 0 происходит подобный сдвиг с переносом, но влево.

Reverse ID Array - перестанавливает элементы одномерного массива в обратном порядке

Split 1D Array - разбивает одномерный массив на два. Первый массив содержит элементы с индексами до index-1 включительно, второй - остальные элементы

Search 1D Array - поиск в одномерном массиве элемента со значением element начиная с start index. Функция возвращает индекс найденного элемента (index of element). Если элемент не найден, то функция возвращает –1.

53

Продолжение таблицы 5.1.

Функция Описание функции

Sort ID Array - сортирует элементы одномерного массива в порядке их возрастания. Если массив состоит из кластеров, функция сортирует массив по первым элементам кластеров. Если первые элементы кластера одинаковые, функция сравнивает вторые и последующие элементы.

Array Max & Min - находит максимальный и минимальный элементы в массиве, выдает их значение и индексы

Transpose 2D Array - транспонирует двумерный массив так, что массив 3х2 становится массивом 2х3

Interpolate ID Array - линейная интерполяция одномерного массива. На вход подается массив значений у и дробный индекс х, по которому находится значение у. Например, пусть дано два числа 5,5 и 6 и нужно найти значение находящееся между ними посередине, тогда введя значение х равное 0,5 найдем y равное 5,75.

Decimate ID Array - разбивает исходный одномерный массив n массивов, помещая в первый массив элементы с индексами 0, n, 2n ... во второй массив – 1, n + 1, 2n + 1... и т.д., где n – число выходов иконки функции.

54

 

Продолжение таблицы 5.1.

Функция

Описание функции

 

Reshape Array - изменяет размерность массива со-

 

гласно количеству и значениям терминалов

 

dimension size. Например, если на вход подать одно-

 

мерный массив, состоящий из 6 элементов, величину

 

объёма нулевой размерности (количество строк)

 

принять равным 3, а , величину объёма первой раз-

 

мерности принять равным 2 (количество столбцов),

 

то на выходе получим двумерный массив 2х3:

 

 

 

Interleave ID Arrays - слияние массивов. Функция

 

поочерёдно размещает элементы с равными индек-

 

сами из входных массивов в один выходной массив.

 

 

5.5. Автоматическое масштабирование функций работы с массивами

Функции Index Array, Replace Array Subset, Insert Into Array, Delete From Array и Array Subset при присоединении к ним массива автоматически изменяют количество входных терминалов, подстраиваясь под соответствующую размерность входного массива. Например, если к ним присоединить одномерный массив функция показывает один терминал для порядкового номера элемента, если двухмерный то два, один для номера строки второй для номера столбца и т.д.

5.6. Функции для работы с массивами логических переменных

Логические функции используются в том числе и для выполнения логических операций над значениями массивов логических величин. Расположены логические функции на палитре Functions Programming Boolean. Описание логических функций для работы с массивами приведено в табл. 5.2.

Таблица 5.2. Функции для работы с массивами логических переменных

Функция Описание функции

And Array Elements - логическая функция И для элементов массива возвращает значение ИСТИНА, если все элементы логического массива Boolean array имеют значение

55

ИСТИНА. Иначе возвращает ЛОЖЬ. Функция воспринимает массивы любого размера

Or Array Elements – логическая функция ИЛИ для элементов массива возвращает ЛОЖЬ, если все элементы логического массива Boolean array имеют значение ЛОЖЬ. Иначе возвращает ИСТИНА. Функция воспринимает массивы любого размера.

Number To Boolean Array – преобразует целое число number в двоичный код (в виде массива логических переменных из 8, 16 или 32 элементов в зависимости от числа битов целого числа).

Boolean Array To Number – преобразует логический массив Boolean array в 32битовое целое число без знака, интерпретируя массив как двоичное представление целого числа.

Вопросы для самопроверки к шестой лекции:

1.Что такое массив?

2.Какие данные могут составлять массив?

3.Как упорядочены элементы массива?

4.Как создать массив на лицевой панели?

5.Как создать массив констант на блок-схеме?

6.Как изменяют свойств элементов управления в массиве?

7.Как увеличить размерность массива?

8.О чем сигнализирует цвет и толщина проводника на блок-диаграмме проведенного к массиву?

9.Какие функции можно использовать для выполнения простейших математических операций над элементами массива?

10.Где расположены основные функции работы с массивами?

11.Какие функции наиболее часто используют для работы с массивами?

12.В чем заключается автоматическое масштабирование функций работы с массивами?

13.Что осуществляют функции для работы с массивами логических пе-

ременных?

Литература для дополнительного обучения: [2, с.74 – 77, 109 - 121; 3,

с.51 – 57].

Лекция 7 Цель лекции – ознакомиться с подпалитрой Структуры, приобрести на-

выки работы с циклом c фиксированным числом итераций For Loop во время поэлементной работы с массивами и при, организации доступа к предыдущим итерациям цикла.

56