3.3 数组型数据
在程序设计语言中,数组是一种常用的数据类型,是相同数据类型的集合,是一种存储和组织相同类型数据的良好方式。LabVIEW也不例外,它提供了功能丰富的数组函数供用户在编程时调用。LabVIEW中的数组是数值型、布尔型、字符串型等多种数据类型中的同类数据集合。
数组由元素和维度组成。元素是组成数组的数据,维度是数组的长度、高度或深度。数组可以是一维的,也可以是多维的。每一维可以多达21亿(221-1)个成员。一维数组是一行或一列数据,描绘的是平面上的一条曲线。二维数组是由若干行和列的数据组成的,它可以在一个平面上描绘多条曲线。三维数组则由若干页构成,每一页都是一个二维数组。数组中的每一个元素都有其唯一的索引数值,对每个数组成员的访问都是通过索引数值来进行的。索引值从0开始,一直到n-1。其中n是数组成员的个数。
3.3.1 数组的创建
在前面板和程序框图中可以创建数值、布尔、路径、字符串、波形和簇等数据类型的数组。下面通过例题来说明数组的创建。
【例3-1】 多维数组的创建。
操作步骤如下。
1)在控件选板中选择“新式”显示风格下的“数组、矩阵与簇”子选板。
2)找到数组图标,单击选择并将其拖到前面板适当位置。
3)在控件选板上选择一个数值控件,将其拖入数组控件的框中,即可完成元素添加。
4)将鼠标移动到数组边框右下角,拖动鼠标可以添加新的数组元素。
5)右击数组控件,从弹出的菜单中选择“添加维数”即可设定所需维数,如图3-16所示。
图3-16 添加数组维数及成员
需要注意的是数组中不能再创建数组,但允许创建多维数组或创建每个簇中含有一个或多个数组的簇数组。不能创建元素为子面板控件、选项卡控件、图标或多曲线XY图的数组。
3.3.2 数组函数
数组函数用于对一个数组进行操作,主要包括求数组的长度、替换数组中的元素、取出数组中的元素、对数组排序或初始化数组等各种运算,LabVIEW的数组选板中有丰富的数组函数可以实现对数组的各种操作。函数是以功能函数节点的形式来表现的。数组函数选板在“编程”子选板下的“数组”选板内,如图3-17所示。
图3-17 数组函数选板
常用的数组函数如下。
(1)数组大小
数组大小函数显示控件返回数组的位数。如果数组是一维的,则返回一个32位整数值,如果是多维的,则返回一个32位一维整型数组。节点的输入为一个n维数组,输出为该数组各维包含元素的个数。当n=1时,节点的输出为一个标量;当n>1时,节点的输出为一个一维数组,数组的每一个元素对应输入数组中的每一维的长度。
【例3-2】 计算数组大小。
操作步骤如下。
1)首先创建一个数组常量放置到程序框图中。
2)在函数选板下的“编程”选板下的“数值”选板内选择数值常量,将其放置到数组常量框格中生成含一个元素的一维数组。
3)拖动数组常量边框添加元素,使数组中含6行6列总共36个元素。
4)将数组常量输出端子和数组大小函数输入端子相连。
5)在数组大小输出端子上右击,在弹出的快捷菜单中选择“创建→显示控件”。
6)单击“运行”按钮,查看运行结果。
程序框图以及运行结果如图3-18所示。
图3-18 计算数组大小实例
(2)索引数组
索引数组用来索引数组元素或数组中的某一行。此函数会自动调整大小以匹配链接的输入数组的维数。一个任意类型的n维数组接入此输入参数后,自动生成n个索引端子组,这n个输入端子作为一组,使用鼠标拖动函数的下边沿可以增加新的输入索引端子组,这和数组的创建过程相似。每组索引端子对应一个输入端口。建立多组输入端子时,相当于使用同一数组输入参数,同时对该函数进行多次调用。输出端口返回索引值对应的标量或数组。
【例3-3】 索引数组的使用。
操作步骤如下。
1)首先,创建一个数组常量,连接到索引数组函数。
2)由索引数组函数自动生成一对索引端子,为索引行输入值设为2,索引列输入值为2,表示索引第3行第3列数值。
3)在输出端子上右击,在快捷菜单中选择“创建→显示控件”,创建一个数值显示控件。
4)拖动函数下沿添加索引,在索引列端子添加数值为3,索引第4列数组,在函数右端创建显示控件,自动创建为一维数组。
5)运行程序,数值显示控件显示索引到的值。
例程程序框图及结果如图3-19所示。
注意:LabVIEW中的行和列与数组中的行和列有区别,LabVIEW中从第0行算起,所以第0行对应实际数组的第1行。
图3-19 索引数组函数的应用
(3)替换数组子集
替换数组子集函数的接线端子如图3-20所示。其功能是从索引中指定的位置开始替换数组中的某个元素或子数组。拖动替换数组子集下的边框可以增加新的替换索引。
图3-20 替换数组子集函数的接线端子
图3-21所示的程序将数组的第1行替换为新的序列。
图3-21 替换数组子集函数的使用
(4)数组插入
数组插入函数的接线端子如图3-22所示。其功能是向数组中插入新的元素或子数组。n维数组是要插入元素、行、列或页的数组。输入可以是任意类型的n维数组。索引0,…,n-1端子指定数组中要插入元素、行、列或页的点。n或n-1维数组端子是要插入n维数组的元素、行、列或页。其使用与替换数组子集函数基本相同,此处不再赘述。
图3-22 数组插入函数的接线端子
(5)删除数组元素
删除数组函数的接线端子如图3-23所示。其功能是从数组中删除元素,可删除的元素包括单个元素或者子数组。删除元素的位置由索引的值决定。长度端子指定要删除的元素、行、列或页的数量。索引端子指定要删除的行、列或元素的起始位置。对二维及二维以上的数组不能删除某一个元素,只有一维数组允许删除指定元素。其用法与索引数组函数基本相同,这里不再举例。
图3-23 删除数组元素函数的接线端子
(6)初始化数组
初始化数组函数的接线端子如图3-24所示,其功能是创建一个新的数组。数组可以是任意长度。每一维的长度由选项“维数大小”所决定,元素的值都与输入的参数相同。初次创建的是一维数组。使用鼠标拖动函数的下边沿,可以增加新的数组元素,从而增加数组的维数。
图3-24 初始化数组函数的接线端子
(7)创建数组
创建数组元素函数的功能是把若干个输入数组和元素组合为一个数组。函数有两种输入类型:标量和数组。此函数可以接收数组和单值元素的输入。当此函数首次出现在框图窗口时,自动带一个标量输入。当要添加更多的输入时,可以在函数左侧弹出的菜单中选择“增加输入”,也可以将鼠标放置在对象的一个角上拖动鼠标来增加输入。此函数在合并元素和数组时,按照出现的顺序从顶部到底部合并。
【例3-4】 创建波形数组。
操作步骤如下。
1)创建一个新的VI,在“编程→结构”中选择While循环放置在程序框图上。
2)在函数面板中选择“波形→模拟波形→波形生成”,从中选择正弦波形函数放置于While循环内,作为输入值。
3)设定两个正弦波形的频率和幅值,可以为不同的值。
4)在While循环内放置创建数组函数,并与两个正弦波形连线。
5)在控件选板中选择“新式→图形→波形图标”,放置于While循环内,并与创建数组函数连接。
6)单击“运行”按钮,观察运行结果。
程序框图及运行结果图如图4-25所示。
图3-25 创建数组函数的应用