教程:数组和簇

本教程介绍了数组和簇数据类型,以及创建和使用数组和簇的方法。

数组由元素和维度构成,可以是输入控件或显示控件,但不能同时包含输入控件和显示控件。 元素是数组中包含的数据或值。 维度是数组的长度、高度或深度。 数组适用于使用一组同类数据集或需要存储重复计算历史时。

数组中的元素是有序的, 数组中的每个元素都有一个对应的索引值,通过数组索引可访问数组中的某个特定元素。 NI LabVIEW软件中的数组索引从0开始。 也就是说,如果一维(1D)数组包含n个元素,那么索引范围就是0~n – 1,其中索引0指向数组中的第一个元素,索引n – 1指向数组中的最后一个元素。

簇可以将混合类型的数据集合在一起。 LabVIEW错误簇就是一个常见的簇,它包含一个布尔值、一个数值以及一个字符串。 簇类似于文本编程语言中的记录或者结构体。

与数组相似,簇也可以是输入控件或显示控件,但不能同时包含输入控件和显示控件。 簇和数组的不同之处在于特定簇的大小是固定的,而特定数组的大小可以变化。 同时,簇可以包含多种数据类型,但数组只能包含一种数据类型。

创建数组输入控件和显示控件
要在LabVIEW中创建数组,必须在前面板上放置一个数组,并在数组内放置一个元素(如数值、布尔或波形输入控件或显示控件)。

1. 新建一个VI。

2. 右键单击前面板,显示控件选板。

3. 在控件选板上,浏览新式»数组、矩阵与簇并将数组拖曳至前面板。

4. 在控件选板上,浏览新式»数值,拖曳并放置一个数值显示控件至数组内。

5. 将鼠标悬浮于数组上方,拖曳数组右侧可展开数组并显示多个元素。

上述步骤介绍了创建一维数组的方法。 而二维数组则是以网格或矩阵的方式存储元素。 二维数组中的每个元素都包含两个对应的索引值:行索引和列索引。 与一维数组相同,二维数组的行索引和列索引也是从0开始的。

创建二维数组前,必须先创建一个一维数组,然后增加其维度。 现在返回到之前创建的一维数组。

1. 在前面板上右键单击索引显示并从快捷菜单中选择添加维度。

2. 将鼠标悬浮于数组上方,拖曳数组的一个角可展开数组并显示多行和多列。

至此,创建数组的数值元素均显示为灰色的0。 灰色数组元素表示元素未被初始化。 单击元素内部,将灰色0替换为需要的数字,可初始化元素。

元素可初始化为任何选择的值。 元素值无需统一,如上图所示。

创建数组常量
数组常量用于存储常量数据或用于同另一个数组进行比较。

1. 右键单击程序框图,显示函数选板。

2. 在函数选板上,浏览编程»数组并将数组常量拖曳至程序框图。

3. 在函数选板上,浏览编程»数值并将数值常量拖曳至“数组常量”。

4. 重新调整数组常量大小并初始化一些元素。

数组输入/输出
如果将数组连线到For循环的输入端,通过自动索引功能,LabVIEW可将For循环计数接线端自动设置为数组大小。 右键单击连线至数组的循环隧道,选择启用索引(禁用索引)。

如启用了自动索引,For循环的每次迭代传递数组中对应的元素。

连线值作为For循环的输出时,启用自动索引会输出一个数组。 数组大小与For循环执行的迭代次数相同,数组包含For循环的输出值。

1. 新建一个VI。 浏览文件»新建VI。

2. 在程序框图上创建并初始化2个一维数组常量,每个数组常量包含6个数值元素,类似下图所示的数组常量。

3. 在前面板上创建一个一维数值数组显示控件。 将数值类型改为32位整型。 右键单击数组并选择表示法»I32。

4. 在程序框图上创建一个For循环,并在其内部放置一个“加”函数。

5. 将一个数组常量连入For循环并将其连接至“加”函数的x接线端。

6. 将另一个数组常量连入For循环并将其连接至“加”函数的y接线端。

7. 将“加”函数的输出接线端连出For循环,并将其连接至数值数组显示控件的输入接线端。

8. 最终程序框图和前面板应与下图相似。

程序框图

程序框图

前面板

前面板

9. 回到前面板并运行VI。 注意数值数组显示控件中的每个元素被两个数组常量中对应元素的和填充。

如果在多个循环隧道上启用了自动索引并连线For循环计数接线端,则迭代次数等于较小的计数。 如下图所示,For循环计数接线端设为运行15次,数组1包含10个元素,数组2包含20个元素。 如果运行下图的VI,则For循环执行10次且数组结果包含10个元素。 请自行进行测试。

如下图所示,可使用嵌套式For循环和自动索引创建二维数组。 外部的For循环创建了行元素,内部的For循环创建了列元素。

创建簇
1. 新建一个VI。

2. 右键单击前面板,显示控件选板。

3. 在控件选板上,浏览新式»数组、矩阵与簇并将簇拖曳至前面板。

4. 重新调整簇的大小,以便容纳多个元素。

5. 在控件选板上,浏览新式»数值,拖曳并放置一个数值输入控件至簇内。

6. 在控件选板上,浏览新式»字符串与路径,拖曳并放置一个字符串输入控件至簇内。

7. 在控件选板上,浏览新式»布尔,拖曳并放置一个垂直摇杆开关至簇内。

8. 您的簇应该与下图类似。

这样,通过一根连线就可以将数值、字符串和布尔控件在程序框图中进行连线,而无需三根单独的连线。

创建簇常量
与数组常量相似,簇常量可用于存储常量数据或用作与别的簇进行比较的基础。 创建簇常量的方式与前面所述创建数组常量的步骤相同。

如您已有簇输入控件或显示控件,需要创建包含同样数据类型的簇常量,可首先复制程序框图上的簇输入控件或显示控件,然后右键单击副本并从快捷菜单中选择转换为常量。

簇函数
本教程介绍四种常用于簇的簇函数。 它们分别是捆绑、解除捆绑、按名称捆绑以及按名称解除捆绑函数。

捆绑函数可用于将单个元素组装成簇。 要将元素连线至捆绑函数,可使用鼠标重新调整函数大小,或右键单击函数并从快捷菜单中选择添加输入。

按名称捆绑或捆绑函数可用于修改现有的簇。 可按照捆绑函数相同的方式重新调整按名称捆绑函数的大小。

按名称捆绑函数在修改现有簇时十分有用,因为通过该函数可知道具体修改的簇元素。 例如,假设一个簇包含两个标签为“字符串1”和“字符串2”的字符串元素。 如使用捆绑函数修改簇,函数接线端以粉色abc的形式出现。因此,无法获知哪个接线端修改“字符串1”,哪个接线端修改“字符串2”。

但如果使用按名称捆绑函数修改簇,函数接线端会显示元素标签,因此哪个接线端修改哪个标签十分清楚。

解除捆绑函数可用于将簇分解成单个元素。 按名称解除捆绑函数可用于返回根据名称指定的特定簇元素。 可通过捆绑和按名称捆绑函数相同的方式重新调整这些函数的大小,以容纳多个元素。

簇顺序
簇元素包含一个与其在簇中位置无关的逻辑顺序。 簇中放置的第一个对象是元素0,第二个对象是元素1,依此类推。 删除元素时顺序会自动调整。 簇顺序决定了元素出现在程序框图上捆绑和解除捆绑函数接线端的顺序。 右键单击簇边界并从快捷菜单中选择重新排序簇中控件,可查看和修改簇顺序。

每个元素上的白色小框显示了该元素当前在簇中的顺序。 黑色小框表示元素新的顺序。 要设置簇元素的顺序,可在单击设置文本框中新的顺序编号并单击元素。 元素簇顺序发生改变后,其他元素的簇顺序会自动调整。 单击工具栏上的确认按钮可保存修改。 单击取消按钮可回到原始顺序。