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

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

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

 

Рис 2.22 Палитры функций работы с массивами (а) и кластерами

 

Ниже в таблицах описаны функции работы с массивами.

 

Array Size                                           Размер массива

 

 

Функция возвращает число элементов массива каждой размерности Функция является полиморфной, то есть она может определять размеры массива произвольной размерности. На рисунках показаны варианты определения размеров одномерного и двумерного массивов. Вход массив (array) может быть n-мерным массивом любого типа. Выход размер(ы) (size(s)) является 32-битовым целым, если массив является одномерным. Если массив является многомерным, то возвращаемое значение является одномерным массивом, в котором каждый элемент является 32-битовым целым, представляющим число элементов по соответствующей размерности массива.

 

 

Initialize Array                                    Инициализировать массив

 

 

Функция создает n-мерный массив, в котором каждому элементу присваивается значение, заданное на входе элемент (element) Размерность выходного массива может быть увеличена растяжением иконки функции по вертикали с помощью инструмента перемещения. На вход элемент может быть подана величина любого скалярного типа. Вход размер массива (dimension size 0 . n-1) должен быть числовым. Функция создает пустой массив, если на один из входов размер массива подан О . Для инициализации n-мерного массива необходимо иметь п терминалов размер  массива.

Выход инициализированный массив (initialized array) является массивом того же типа, что и величина на входе элемент

 

 

Index Array                                            Индексировать массив

 

Рис. 2.23. Варианты подключения функции Индексировать массив

 

Функция возвращает элемент (element) или подмассив (sub-array) входного массива (array) начиная с индекса (index). При подключении входного массива функция автоматически перестраивается в соответствии с его размерностью, отображая входы индекс для каждой размерности (рис 2.236). Число терминалов элементов или подмассивов можно увеличить с помощью инструмента перемещения. Входной массив может быть n-мерным массивом любого типа. Если входной массив является пустым, то на выходах элемент или подмассив возвращается значение по умолчанию для данного типа элементов массива. Вход индекс должен быть числовым Число входов индекс должно соответствовать размерности входного массива Если значение индекс находится вне диапазона индексов (<0 или >N, где N - размер входного массива), то на выходе элемент или подмассив возвращается значение по умолчанию.

Выход элемент или подмассив имеет тот же тип, что и элементы входного массива. Наряду с извлечением элемента массива функция позволяет извлекать подмассив из массива, если один из входов индексирования был оставлен неподключенным. Так, например, оставляя неподключенным вход индексирования по столбцам (рис 2.236), можно выделить заданную строку двумерного массива, а оставляя неподключенным вход индексирования по строкам, можно выделить заданный столбец Неподключенный вход отображается в функции как полый прямоугольник. Задание индекса строки и столбца позволяет выделить элемент двумерного массива. По умолчанию если ни один из входов функции не подключен, то на ее выход передается содержимое первой строки. Если размер иконки функции по вертикали будет увеличен, то на втором выходе будет отображаться вторая строка и т. д.

 

 

Replace Array Subset                                      Заменить подмассив

 

 

Функция заменяет элемент или подмассив входного массива начиная с точки, определенной на входе индекс (index). Функция также перестраивается в соответствии с размерностью подключаемого массива. Если входы индексирования по определенной  размерности не подключены, то функция заменяет все элементы по этой размерности. Вход массив (array) представляет массив, в котором заменяются элементы, строки,  столбцы или страницы. Этот вход может быть n-мерным массивом любого типа. Вход индекс определяет элемент, строку, столбец или страницу массива, которые должны быть заменены.

Вход новый элемент/подмассив (new element/subarray) представляет массив или элемент, которые заменяют элемент, строку, столбец или страницу массива, подаваемого на вход массив.

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

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

 

 

Insert Into Array                                       Вставить в массив

 

 

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

Вход массив (array) представляет массив, в который вставляется элемент, строка, столбец или страница. Этот вход может быть n-мерным массивом любого типа. Вход индекс определяет точку массива, начиная с которой вставляется элемент, строка, столбец или страница Может подключаться только один индексный вход.

Вход новый элемент/подмассив (new element/subarray) передает массив или элемент, которые вставляются во входной массив.

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

 

 

Delete From Array                                 Удалить из массива

 

 

Функция удаляет элемент или подмассив из массива (array) и возвращает уменьшенный массив на выходе массив после удаления подмассива (array w/ subset deleted) и удаленный элемент или подмассив на выходе удаленный фрагмент (deleted portion). Функция изменяет число индексов в соответствии с размерностью подключаемого к ее входу массива.

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

Вход индекс (index) определяет удаление элемента, строки, столбца или страницы Может бытьподключен только один вход индексирования.

 

 

Build Array                                                  Сформировать массив

Рис 2.24 Варианты подключения функции Сформировать массив

 

Функция объединяет набор массивов или добавляет элементы к n-мерному массиву. Для модификации существующего массива можно использовать и функцию заменить подмассив. Входы массив (array) или элемент (element) могут быть n-мерным массивом илискалярным элементом Все входы должны быть элементами и одномерными массивами.

или n-мерными и (п-1 )-мерными массивами. Все входы должны иметь один и тот же  базовый тип

Выход добавленный массив (appended array) отображает результирующий массив. При помещении функции на блок-диаграмму она имеет только один доступный вход (рис. 2 24а). Использование ее в таком виде позволяет преобразовать скалярную  величину в одномерный массив, содержащий один элемент. Количество входов можно увеличить с помощью вызова строки добавить вход (Add Input) контекстного меню или увеличивая размер функции в вертикальном направлении с помощью инструмента перемещения (рис. 2.246, 2.24в, 2.24г, 2 24д). Функция Сформировать массив выполняется в двух режимах в зависимости от выбора  опции объединить входы (Concatenate Inputs) Если эта опция установлена в контекстном  меню функции, то функция добавляет все входы друг за другом, формируя выходной  массив с размерностью, которая равна наибольшей размерности входного массива  (рис 2.24г) Если же эта опция не выбрана, то функция формирует выходной массив  с размерностью, на единицу большей размерности входного массива (рис. 2 24д). При этом  входы должны иметь одинаковую размерность. Функция добавляет каждый вход в порядке  подключения, формируя подмассив, элемент, строку или страницу выходного массива. Входы дополняются, если это необходимо, до размера наиболее длинного массива.  Если входы являются массивами одинаковой размерности, то контекстное меню функции позволяет устанавливать или снимать опцию объединить входы (Concatenate Inputs) Если входы имеют различную размерность (рис. 2.24в), то опция объединить  входы выбирается автоматически и не может быть снята. Если все входы являются  скалярными элементами (рис. 2.246), то опция объединить входы автоматически снимается и не может быть выбрана, а выход является одномерной функцией, содержащей  элементы, которые следуют в порядке подключения.

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

 

Array Subset                                               Подмассив

Функция возвращает часть массива (array), начинающуюся с индекса (index) и содержащую число элементов, заданное на входе длина (length). При подключении массива  функция автоматически перестраивается в соответствии с его размерностью. Вход массив может быть n-мерным массивом произвольного типа. Вход индекс должен быть числовым Если индекс меньше 0, то функция воспринимает его  как 0 Если индекс больше или равен размеру массива, то функция возвращает пустой  массив.

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

 

 

Rotate 1D Array                                  Циклически сместить одномерный массив

 

Функция циклически смещает элементы массива (array) на число позиций и в направлении, определяемом значением на входе n.

Вход п должен иметь числовой тип данных. Функция преобразует п к 32-битовому целому числу при подключении числа с другим представлением.

Вход массив может быть одномерным массивом произвольного типа

Выход массив (последние п элементов первыми) (array (last n elements first)) представляет выходной массив.

Например, если п равно 1, то нулевой элемент массив[0] станет первым элементом  выходного массива массив (последние п элементов первыми)[1], первый элемент массив[1] станет вторым элементом массив (последние п элементов первыми)[2] и т. д., и элемент массив[т-1] станет нулевым элементом массив (последние п элементов  первыми)[0], где m - число элементов массива. Если n равно - 2 , нулевой элемент  массива массив[0] станет элементом массив (последние n элементов первыми)[т-2]  первый элемент массив[1] станет элементом массив (последние п элементов  первыми)[т-1] и т.д., и входной элемент массива массив[т-1] станет элементом  массив (последние п элементов первыми)[т-3]

 

Reverse 1D Array                                 Обратить элементы одномерного массива

Функция обращает порядок элементов одномерного массива произвольного типа

 

 

Search 1D Array                                         Искать в одномерном массиве

 

Функция осуществляет поиск элемента (element) в одномерном массиве (1D array) с начального индекса (start index) Так как поиск является линейным, то нет необходимости в предварительной сортировке массива.

Вход одномерный массив может быть одномерным массивом любого типа.

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

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

Выход индекс элемента (index of element) представляет индекс найденного элемента.

Если функция не находит элемент, то индекс элемента имеет значение -1

 

 

Split 1D Array                                            Сортировать одномерный массив

 

 

Функция возвращает отсортированную версию входного массива (array) с элементами,  расположенными в порядке возрастания. Если массив является массивом кластеров; то функция сортирует элементы, сравнивая первые элементы кластеров. Если первые  элементы совпадают, функция сравнивает вторые и последующие элементы

 

 

 

 

 

 

 

 

 

 

Array Max & Min                                      Максимум и минимум массива

Рис 2.25. Варианты подключения функции Максимум и минимум массива

 

Функция возвращает максимальное и минимальное значения, найденные в массиве (array), вместе с индексами каждого значения.

Вход массив может быть n-мерным массивом произвольного типа.

Выходы максимальное значение (max value) и минимальное значение (mm value)  имеют тот же тип и структуру данных, что и элементы входного массива.

Выход максимальный индекс (max index) отображает индекс первого максимального  значения Если массив является многомерным, то выход максимальные индексы  (max indexes) представляет массив, элементами которого являются индексы первого  максимального значения массива

Выход минимальный индекс отображает индекс первого минимального значения

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

Если числовой массив является одномерным, то выходы максимальный индекс и  минимальный индекс являются скалярными целыми (рис 2 25а). Если числовой  массив является многомерным, то эти выходы представляют одномерный массив,  который содержит индексы максимального и минимального значений (рис. 2.256)

 

 

 

 

Transpose 2D Array                                  Транспонировать двумерный массив

 

 

 

Функция переставляет элементы в двумерном массиве (2D array) так, что

двумерный  массив^] становится транспонированным массивом^,!]

 

 

Interpolate 1D Array                                  Интерполировать одномерный массив

 

 

Функция получает с помощью линейной интерполяции десятичное значение у (у value) из  массива чисел или точек (array of numbers or points), используя значение дробного  индекса или х (fractional index or x) На вход данной функции может быть подключен массив  числовых значений или массив точек данных При подключении массива числовых значений  функция интерпретирует дробный индекса или х как ссылку к элементам массива. При

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

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

второго элемента кластера (у). 

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

Если массив чисел или точек содержит массив наборов точек данных, функция возвращает  значение у (у value), полученное с помощью линейной интерполяции при  значении х, соответствующем дробный индекса или х Например, если массив содержит

две точки, (3, 7) и (5, 9) и на входе дробный индекса или х установлено значение  3,5, то функция вернет значение 7,5

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

Выход значение у отображает интерполированное значение элемента при значении  дробного индекса или интерполированное значение у при дробном индексе набора  точек данных массива массив чисел или точек

 

 

Threshold 1D Array                                    Порог одномерного массива

 

 

Функция сравнивает порогу (threshold у) и значения массива чисел или точек (array of  numbers or points), с начального индекса (start index) до нахождения пары таких соседних  элементов, что порогу будет больше значения первого элемента и меньше или  равен значению второго элемента.

Вход массив чисел или точек идентичен одноименному входу рассмотренной выше  функции Интерполировать одномерный массив (Interpolate 1D Array)

Вход порогу является пороговым значением функции. Если порогу меньше или равен  значению массива с индексом начальный индекс (start index), то функция возвращает начальный индекс на выходе дробный индекс или х (fractional index or x) Если порог  у больше каждого значения массива, то функция возвращает индекс последнего  значения. Если массив является пустым, функция возвращает значение NaN.

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

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

Так, например, если входной массив массив чисел или точек является массивом из четырех чисел [4, 5, 5, 6], начальный индекс равен 0 и порогу равен 5, тогда дробный индекс илих равен 1, соответствующей индексу первого найденного функцией значения 5 Если массив  содержит элементы 2,3, 5,2, 7,8, 7,9, 10,0, начальный индекс равен 0 и порогу равен 6,5, то тогда

выходное значение будет равно 1,5, поскольку 6,5 находится посередине между 5,2 (индекс 1) и  7,8 (индекс 2) Если порог у равно 7 для того же набора данных, то выходное значение будет равно 1,69

Если входной массив содержит массив точек, в котором каждая точка является кластером  координат х и у, выход представляет интерполированное значение х, соответствующее интерполированному  положению порога порог у, а не дробному индексу массива Если интерполированное  положение порог у находится посередине между индексами 4 и 5 массива, имеющего значения

по х -2,5 и 0 соответственно, то на выходе будет не значение индекса 4,5, как это было для  числового массива, а значение х, равное -1,25.

Эта функция не определяет индекс пересечения порога при отрицательном

наклоне и возвращает некорректное значение, если порогу меньше значения

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

 

 

Interleave 1D Arrays                                  Чередовать одномерные массивы

 

 

Функция поочередно размещает элементы с равными индексами из входных массивов  в один выходной массив.

Входы массив CL.n-1 (array 0. п-1) должны быть одномерными массивами Если  входные массивы имеют разный размер, то число элементов в чередуемом массиве (interleaved array) равно произведению числа элементов в самом коротком массиве на  число массивов

Выход чередуемый массив[0] содержит массив 0[0], чередуемый массив[1] содержит  массив 1 [0], чередуемый массив[п-1] содержит массив п-1[0], чередуемый  массив[п] содержит массив 0[1] и т. д., где п - число входных терминалов

 

 

Decimate 1D Array                                       Децимировать одномерный массив

 

Функция разделяет элементы входного массива (array) на ряд выходных массивов, размещая элементы на выходах последовательно. Число выходных терминалов может  быть увеличено путем растяжения иконки функции в вертикальном направлении  с помощью инструмента перемещения.

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

Выход децимированный массив (decimated array) представляет первый выходной  массив и содержит элементы 0, п, 2п,. Функция размещает элемент массив[0] по индексу 0 первого выходного массива, элемент массив[1] - по индексу 0 второго выходного массива, элемент массив[п-1] - по индексу 0 последнего выходного массива, элемент массив[п] - по индексу 1 первого выходного массива и т. д , где п - число выходных терминалов этой функции.

Например, если массив имеет 16 элементов и к функции подключено четыре выходных массива, то первый выходной массив получит элементы с индексами 0, 4, 8 и 12

Второй выходной массив получит элементы с индексами 1, 5, 9 и 13, третий массив – элементы 2, 6, 10 и 14, и последний массив - элементы 3, 7, 11 и 15

Выход децимированный массив 2 представляет второй выходной массив и содержит элементы 1, п+1, 2п+1... и  т.д

 

 

 

 

 

 

Reshape Array                                             Изменить форму массива

 

Рис. 2 26. Варианты подключения функции Изменить форму массива

 

Функция изменяет размер или размерность массива в соответствии со значениями входов объем размерности 0...m-1 (dimension size 0...m-1)

Вход массив может быть n-мерным массивом любого типа.

Входы объем размерности 0...т-1 должны быть числовыми Функция формирует пустой массив, если объем размерности равен 0 Для формирования m-мерного выходного массива функция должна иметь m входов объем размерности.

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

функция усекает массив.

Данная функция не перемещает данные в памяти, а только изменяет их восприятие в соответствии с параметрами, задающими объем каждой размерности Так, например, если на вход функции передается одномерный массив с 9 элементами  (0,1,2,3,4.5,6,7,8}, а на входах объема размерности заданы значения 2 и 3, то функция возвращает двумерный массив, содержащий {{0,1,2},{3,4,5}} Функция усекает последние три входных

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

Число входов объем размерности может быть увеличено путем растяжения иконки функции в вертикальном направлении с помощью инструмента перемещения

На рис 2 26 показаны варианты применения функции для изменения размера одномерного массива (рис 2 26а), преобразования одномерного массива в двумерный (рис 2 266), изменения размера двумерного массива (рис 2 26в) и преобразования двумерного массива в одномерный (рис 2 26г)

 

 

Array To Cluster                                            Массив в кластер

 

 

 

Функция преобразует одномерный массив в кластер элементов того же типа, что и элементы массива. Число элементов кластера устанавливается с помощью  опции Размер кластера (Cluster Size) контекстного меню функции. По умолчанию число элементов равно девяти Максимальный размер кластера для этой функции равен  256

 

 

Cluster To Array                                            Кластер в массив

 

 

 

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

 

В качестве примера эффективного использования функций работы с массивами на рис. 2.27 приведена блок-диаграмма ВП Уравнение нагрева (Heat Equation) из набора примеров N1 Example Finder LabVIEW.

 

 

 

 

 

 

РИС 2 27. Блок-диаграмма ВП Уравнение нагрева (Heat Equation)

 

 

В следующей таблице рассмотрены функции работы с кластерами.

Bundle

Сборка кластера

 

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

для отображения каждого элемента кластера.

При создании нового кластера количество входов данной функции может быть установлено путем

растяжения терминала функции по вертикали с помощью инструмента перемещения. Если ко входу

кластер (cluster) ничего не подключено, то все другие входы терминала функции должны быть подключены.

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

Unbundle

Разделение кластера

 

Функция разделяет кластер (cluster) на его отдельные элементы. При подключении кластера к данной

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

кластера. Данная функция создает выходы этих элементов в том же порядке, в каком они существуют

в кластере. Число выходов этой функции должно соответствовать числу элементов кластера

Bundle By Name

Сборка кластера по имени

 

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

Эта функция при выборе элементов кластера учитывает имя элемента, а не его позицию в кластере. После

подключения узла к входному кластеру с помощью строки выбрать пункт (Select Item) контекстного меню терминала имени можно выбрать имя элемента, соответствующее данному входу Эту же операцию можно выполнить и с помощью инструмента Управление,

щелкнув им на терминале имени и выбрав имя из списка

 

 

 

 

Unbundle By Name

Разделение кластера по имени

 

Функция возвращает элементы кластера с их именами

Эта функция не требует соответствия между количеством

элементов в кластере и числом ее выходов

 

Build Cluster Array

Создание массива кластеров

 

Функция преобразует каждый компонент в кластер и собирает все кластеры компонентов в массив кластеров.

Каждый кластер содержит единственный компонент. LabVIEW не позволяет создавать массив из массивов, однако с помощью данной функции можно создать массив кластеров, где каждый кластер содержит массив. Пример формирования такого массива

кластеров приведен на рисунке

Index & Bundle Cluster Array

Индексирование и формирование массива кластеров

 

Функция индексирует набор массивов и создает массив кластеров, в котором 1-й элемент (кластер)

содержит i-e элементы каждого входного массива