LabVIEW数据采集
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.2 数组与簇

3.2.1 数组

数组是LabVIEW 中非常重要的概念,同一类型的数据归为一组就构成了该类型数据的数组。数组由元素和维度组成,元素是构成数组的数据,维度是数组的长度、高度或深度,如图 3-2-1 所示。可以创建数值数组、布尔数组、字符串数组、路径数组、簇数组等数组。

数组可以是一维或多维的,在内存允许的情况下每一维度可有多达(231)-1个元素。

图3-2-1 数组及常见数据类型构成的数组

1.数组选板

【练习3-13】

在图3-2-2中找到LabVIEW前面板的数组控件和程序框图中的“数组”子选板中的数组函数。

图3-2-2 前面板及程序框图中的“数组”子选板

2.创建数组的限制条件

尽管有很多元素可以用于创建数组,但也有一些限制条件,如图3-2-3所示。

图3-2-3 创建数组时限制条件

注意:可以创建多维数组或创建每个簇中含有一个或多个数组的簇数组。

3.创建数组

【练习3-14】

参看如图 3-2-4 所示的在前面板创建数值数组的方法,该方法为最基础的创建方法,注意程序框图中数组控件的图标变化,并尝试创建图3-2-1所列的其他几种数组的显示控件。

图3-2-4 创建数值数组输入控件

从LabVIEW 2015开始,创建数组的方法相较以前版本的方法更为简单。

【练习3-15】

参看如图3-2-5所示方法,在LabVIEW 2015或以上版本中创建一个数值数组,并以此方法,创建如图3-2-1所示的其他类型的数组。

图3-2-5 LabVIEW 2015创建数组的方法

【练习3-16】

继续上面的练习,参看如图3-2-6所示方法,将显示控件转换为输入控件。

图3-2-6 数组的显示控件与输入控件的转换

4.数组常量

数组也可以设置常量,创建的数组常量与其自身的数据类型一致。

【练习3-17】

参看如图3-2-7所示方法,掌握创建数值数组常量的方法,并以此法创建如图3-2-1所示的其他类型的数组常量。

图3-2-7 创建数组常量

5.创建多维数组

数组的维数超过一维时,该数组就是多维数组。对前面板中放置的一维数组进一步操作,就可以得到需要的多维数组。

【练习3-18】

参看如图3-2-8所示步骤,掌握创建多维数组的两种基本方法。

图3-2-8 创建多维数组

若要减少数组的维数,则可选中目标数组→单击鼠标右键→选择“删除维度”选项。

6.数组的索引

想要从数组中准确找到某个位置的元素,需要使用数组的索引操作。使用索引可以浏览数组里的所有元素,也可以定位数组中的某个位置的元素。此外,还可以提取数组中的元素、行、列和页。

【练习3-19】

参看如图3-2-9所示方法,以一维数组为例,编写程序并掌握索引数组的基本方法。

图3-2-9 索引数组

7.数组绘图应用

数组在LabVIEW中广泛参与程序运算和绘图,下面的练习中涉及一维数组、二维数组、簇数组的绘图应用。

【练习3-20】

参看如图3-2-10所示举例,编写程序并掌握在LabVIEW中利用一个二维数组输出绘图的方法。请回答波形图的X轴与数组的哪一个部分关联。

【练习3-21】

参看如图3-2-11所示的数组举例,编写程序并掌握使用簇数组(一维数组)表示XY图中的x值与y值的方法。想一想此方法可延伸应用在哪些场合。

图3-2-10 数组举例

图3-2-11 簇数组举例

【练习3-22】

参看如图3-2-12所示举例,编写程序并掌握使用数组(二维数组)表示数组波形的基本方法。

图3-2-12 二维数组绘图举例

8.数组函数

数组参与程序的运算很大程度是基于数组函数实现的,数组函数位于程序框图中的“数组”选板。这些函数用于数组的创建和编辑等操作。例如,从数组中提取单个数据元素,在数组中插入、删除或替换数据元素、分解数组等相关操作。

1)创建数组

除前面介绍的创建输出的基本方法外,使用“数组”选板中的“创建数组”函数,可以通过编程方式创建新数组。此外,还可利用For循环创建数组(方法见后续章节)。

2)自动调整数组大小的函数

某些数组函数具备自动适应数组维数的能力。例如,将一个一维数组连线到某函数,该函数仅显示单个索引输入。若将一个二维数组连线到该函数,则该函数将显示两个索引输入,一个用于行索引,另一个用于列索引,这就是具备自动适应数组维数能力的函数。这些函数包括“索引数组”函数、“替换数组子集”函数、“数组插入”函数、“删除数组元素”函数和“数组子集”函数等。

【练习3-23】

参看如图3-2-13所示步骤,以“索引数组”函数为例编写程序,并掌握定位工具的使用方法。

3)数组的默认数据

数组的索引范围与数组元素的个数之间关联,当索引值设置超出数组元素的数量范围时,数组元素的参数将返回默认值,而不返回错误的范围值。利用“数组大小”函数可确定数组的元素个数,从而得到数组索引的范围。

图3-2-13 自动调整数组大小的函数(举例)

【练习3-24】

参看如图3-2-14所示步骤,编写程序并理解数组默认数据的概念。

图3-2-14 数组默认数据

4)通过编程替换数组中的元素

对数组里的元素进行操作,可以通过替换数组中元素、行、列或页来实现,可替换的部分取决于数组的维数。例如,在二维或二维以上的数组中,可用一维数组替换行或列;在三维或三维以上的数组中,可用二维数组替换页。

【练习3-25】

如图3-2-15所示,使用“替换数组子集”函数对一个二维数组进行替换数组元素的操作,掌握索引行接线端、索引列接线端的用法。

图3-2-15 替换数组子集

3.2.2 簇

簇和数组在某些方面有相似的地方,都是将一些数据归为一组。簇可以将不同的数据归为一组,数组只能操作同类型的数据。例如,簇里的成员可以包含布尔、数值、字符串甚至是日期时间。簇类似于文本编程语言中的记录或结构体。

【练习3-26】

在程序框图的“函数”选板中搜索“错误簇常量”,并将其放置在程序框图中。通过认识错误簇常量里面的元素,加深对簇概念的理解。错误簇常量如图3-2-16所示。

图3-2-16 错误簇常量

在程序框中使用簇,一方面是利用簇集成多种元素的整体性优势,减少程序框图中因单独使用元素控件接线端而产生的大量连线。

一个VI的连线板最多有28个接线端,若前面板上要传送给另一个VI的输入控件和显示控件多于28个,应可考虑将其中的一些对象组成一个簇,然后为该簇分配一个连线板接线端。

【练习3-27】

读懂图3-2-17中的程序片段,理解在程序中用簇整合前面板中独立控件的优势。

图3-2-17 簇使用场合举例

【练习3-28】

参看图3-2-18,尝试编写由不同元素组成的簇,理解不同颜色所代表的簇对象的含义。

图3-2-18 簇的颜色

1.簇元素的顺序

数组的元素是有序的,利用索引功能可以准备提取数组中有序排列的元素。尽管组成簇的元素是不同的数据类型,但簇里面的元素也是有序排列的。利用簇元素有序排列的特点,在对簇元素的解绑(提取)、捆绑操作时就能够有的放矢。

(1)簇有别于数组的另一个特性是,簇的大小是固定的。

(2)与数组一样,簇包含的要么是输入控件,要么是显示控件,簇不能同时含有输入控件和显示控件。

【练习3-29】

参看如图3-2-19所示步骤,理解簇元素顺序的概念并掌握簇元素重新排序的方法。

【练习3-30】

以簇为数组元素构成簇数组是允许的,简单地说是可以创建簇数组。参看图 3-2-20,理解创建簇数组的基本条件,并掌握创建簇数组的相关禁忌。

图3-2-19 簇元素的顺序

图3-2-20 两个簇的连接

2.创建簇输入控件、簇显示控件和簇常量

簇作为前面板的对象,和数组一样也具有输入控件、显示控件,以及在程序框图中对应的接线端和簇常量。

【练习3-31】

参看如图3-2-21所示步骤,掌握创建簇输入控件、簇显示控件和簇常量的方法,并尝试创建由字符串控件、路径控件组成的簇。

3.簇函数

簇函数的创建及相关操作通过“簇、类与变体”选板进行,如图3-2-22所示。

【练习3-32】

通过编程方法将不同数据类型的元素构成一个簇,参看图 3-2-23,理解并掌握“捆绑”函数和“按名称捆绑”函数的使用方法。

图3-2-21 创建簇输入控件、簇显示控件和簇常量

图3-2-22 “簇、类与变体”选板

图3-2-23 使用“捆绑”函数

【练习3-33】

如果簇包含元素的数据类型完全相同,簇可以通过转换操作成为数组,参看图3-2-24,编写程序,掌握簇转换为数组函数的使用方法。

图3-2-24 簇转换为数组函数

【练习3-34】

如图3-2-25所示,本例利用获得的当前系统时间与目标时间进行减运算,得到差值天数的运算结果,计算过程中借助“捆绑”函数将输出的簇进行数据连接捆绑,进而获得一个新的更改了元素数值数据的簇,可对该簇进行后续的运算。读懂并尝试理解本例中是如何实现替换簇元素的,以及“捆绑”函数在其中起到了什么作用。

图3-2-25 替换簇元素

【练习3-35】

参看图3-2-26,编写程序,掌握解除捆绑簇中元素的方法。

图3-2-26 解除捆绑簇中的元素

【练习3-36】

参看图3-2-27,编写程序,掌握按名称解除捆绑簇中元素的方法。

图3-2-27 按名称解除捆绑簇中元素