首页 理论教育LabVIEW2012虚拟仪器操作技巧:数组函数

LabVIEW2012虚拟仪器操作技巧:数组函数

【摘要】:如图6-22和图6-23所示,分别求出了一个一维数组和一个二维数组的长度。图6-30 合并数组的前面板显示图6-31 一维数组排序函数的图标和端口如图6-32和图6-33所示,对一个已知一维数组进行升序和降序排列。图6-38 多维数组的索引的程序框图5.初始化数组初始化数组函数的节点图标及端口定义如图6-40所示。如图6-43所示,创建了一个元素为1,长度为3的一维数组。

对于一个数组可进行很多操作,比如求数组的长度、对数组进行排序、查找数组中的某一元素、替换数组中的元素等等。传统的编程语言主要依靠各种数组函数来实现这些运算,而在LabVIEW中,这些函数是以功能函数节点的形式来表现的。LabVIEW中用于处理数组数据的函数选板中的数组子选板中,如图6-20所示。

下面将介绍几种常用的数组函数。

1.数组大小

数组大小函数的节点图标如图6-21所示,数组大小函数返回输入数组的元素个数,节点的输入为一个n维数组,输出为该数组各维包含元素的个数。当n=1时,节点的输出为一个标量。当n>1时,节点的输出为一个一维数组,数组的每个元素对应输入数组中每一维的长度。如图6-22和图6-23所示,分别求出了一个一维数组和一个二维数组的长度。

978-7-111-40983-0-Chapter06-20.jpg

图6-20 用于处理数组的函数

978-7-111-40983-0-Chapter06-21.jpg

图6-21 数组大小函数的图标和端口

978-7-111-40983-0-Chapter06-22.jpg

图6-22 数组大小函数使用的程序框图显示

978-7-111-40983-0-Chapter06-23.jpg

图6-23 数组大小函数使用的程序框图显示

2.创建数组

创建数组函数的节点图标及端口定义如图6-24所示。创建数组函数用于合并多个数组或给数组添加元素。函数有两种类型的输入:标量和数组,因此函数可以接受数组和单值元素输入,节点将从左侧端口输入的元素或数组按从上到下的顺序组成一个新数组。如图6-25所示,使用创建数组函数创建一个一维数组。

978-7-111-40983-0-Chapter06-24.jpg

图6-24 创建数组函数的图标和端口

978-7-111-40983-0-Chapter06-25.jpg

图6-25 使用创建数组函数创建一维数组

当两个数组需要连接时,可以将数组看成整体,即看为一个元素。图6-26显示了两个数组合并成一个数组的情况。相应的前面板运行结果如图6-27所示。

978-7-111-40983-0-Chapter06-26.jpg

图6-26 使用创建数组函数创建二维数组的程序框图

978-7-111-40983-0-Chapter06-27.jpg

图6-27 使用创建数组函数创建二维数组的前面板

有时可能根据需要使用创建数组函数时,不是将两个一维数组合成一个二维数组,而是将两个一维数组连接成一个更长的一维数组;或者不是将两个二维数组连接成一个三维数组,而是将两个二维数组连接成一个新的二维数组。这种情况下,需要利用创建数组节点的连接输入功能,在创建数组节点的右键弹出的快捷菜单中选择“连接输入”,创建数组的图标也有所改变,如图6-28所示。

若将图6-26改为图6-29,则运行结果如图6-30所示,即两个一维数组合成了一个更长的一维数组。

3.一维数组排序

978-7-111-40983-0-Chapter06-28.jpg

图6-28 选择连接输入

978-7-111-40983-0-Chapter06-29.jpg

图6-29 合并数组的程序框图

一维数组排序函数的节点图标如图6-31所示,此函数可以对输入的数组进行按升序排序,若用户想按降序排序,可以与反转一维数组函数组合,实现对数组的降序排列。

978-7-111-40983-0-Chapter06-30.jpg

图6-30 合并数组的前面板显示

978-7-111-40983-0-Chapter06-31.jpg

图6-31 一维数组排序函数的图标和端口

如图6-32和图6-33所示,对一个已知一维数组进行升序和降序排列。

当数组使用的是布尔型时,真值比假值大,因此若图6-32中的数组数据类型为布尔型时,相应的结果如图6-34和图6-35所示。

978-7-111-40983-0-Chapter06-32.jpg

图6-32 对一维数组进行升降序排列的程序框图

978-7-111-40983-0-Chapter06-33.jpg

图6-33 对一维数组进行升降序排列的前面板

978-7-111-40983-0-Chapter06-34.jpg

图6-34 布尔型数据排序的程序框图

978-7-111-40983-0-Chapter06-35.jpg(www.chuimin.cn)

图6-35 布尔型数据排序的前面板

4.索引数组

索引数组函数的节点图标及端口定义如图6-36所示。索引数组用于访问数组的一个元素,使用输入索引指定要访问的数组元素,第n个元素的索引号是n-1,如图6-37所示,索引号是2,索引到的是第3个元素。

978-7-111-40983-0-Chapter06-36.jpg

图6-36 索引数组函数的图标和端口

978-7-111-40983-0-Chapter06-37.jpg

图6-37 一维数组的索引

索引数组函数会自动调整大小以匹配连接的输入数组维数,若将一维数组连接到索引函数,那么函数将显示一个索引输入,若将二维数组连接到索引函数,那么将显示两个索引输入,即索引(行)和索引(列),当索引输入仅连接行输入时,则抽取完整的一维数组的那一行;若仅连接列输入时,那么将抽取完整的一维数组的那一列;若连接了行输入和列输入,那么将抽取数组的单个元素。每个输入数组是独立的,可以访问任意维数组的任意部分。如图6-38所示,对一个4行4列的二维数组进行索引,分别取其中的完整行、单个元素、完整列。图6-39显示了VI的前面板及运行结果。

978-7-111-40983-0-Chapter06-38.jpg

图6-38 多维数组的索引的程序框图

5.初始化数组

初始化数组函数的节点图标及端口定义如图6-40所示。初始化数组函数的功能是为了创建n维数组,数组维数由函数左侧的维数大小端口的个数决定。创建之后每个元素的值都与输入到元素端口的值相同。函数刚放在程序框图上时,只有一个维数大小输入端子,此时创建的是指定大小的一维数组。此时可以通过拖拉下边缘或在维数大小端口的右键弹出的选单中选择添加维度,来添加维数大小端口,如图6-41所示。

978-7-111-40983-0-Chapter06-39.jpg

图6-39 多维数组索引的前面板

978-7-111-40983-0-Chapter06-40.jpg

图6-40 初始化数组的图标和端口

如图6-42所示,初始化一个一维数组和一个二维数组。

978-7-111-40983-0-Chapter06-41.jpg

图6-41 添加数组大小端口

978-7-111-40983-0-Chapter06-42.jpg

图6-42 数组的初始化

在LabVIEW中初始化数组还有其他方法。若数组中的元素都是相同的,用一个带有常数的For循环即可初始化,这种方法的缺点是创建数组时要占用一定的时间。如图6-43所示,创建了一个元素为1,长度为3的一维数组。

若元素值可以由一些直接的方法计算出来,把公式放到前一种方法中的For循环中取代其常数即可。例如这种方法可以产生一个特殊波形。也可以在框图程序中创建一个数组常量,手动输入各个元素的数值,而后将其连接到需要初始化的数组上。这种方法的缺点是繁琐,并且在存盘时会占用一定的磁盘空间。如果初始化数组所用的数据量很大,可以先将其放到一个文件中,在程序开始时再装载。

需要注意的是,在初始化时有一种特殊情况,那就是空数组,空数组不是一个元素值为0、假、空字符串或类似的数组,而是一个包含零个元素的数组,相当于C语言中创建了一个指向数组的指针。经常用到空数组的例子是初始化一个连有数组的循环移位寄存器。有以下几种方法创建一个空数组:用一个数组大小输入端口不连接数值或输入值为0的初始化函数来创建一个空数组;创建一个n为0的For循环,在For循环中放入所需数据类型的常量。For循环将执行零次,但在其框架通道上将产生一个相应类型的空数组;但是不能用创建数组函数来创建空数组,因为它的输出至少包含一个元素。

6.替换数组子集

替换数组子集函数的节点图标及端口定义如图6-44所示。替换数组子集函数是从新元素/子数组端口中输入,去替换其中一个或部分元素。新元素/子数组输入的数据类型必须与输入的数组的数据类型一致。

978-7-111-40983-0-Chapter06-43.jpg

图6-43 使用For循环进行初始化

978-7-111-40983-0-Chapter06-44.jpg

图6-44 替换数组子集函数的图标和端口

图6-45和图6-46所示,分别替换了二维数组中的某一个元素和某一行元素。

978-7-111-40983-0-Chapter06-45.jpg

图6-45 替换二维数组中的某一个元素

7.删除数组元素

删除数组元素函数的节点图标及端口定义如图6-47所示。删除数组元素用于从数组中删除指定数目的元素,索引端口用于指定所删除元素的起始元素的索引号,长度端口用于指定删除元素的数目。图6-48和图6-49分别显示了从一维数组和二维数组中删除元素。

978-7-111-40983-0-Chapter06-46.jpg

图6-46 替换二维数组中的某一行元素

978-7-111-40983-0-Chapter06-47.jpg

图6-47 删除数组元素函数的图标和端口

978-7-111-40983-0-Chapter06-48.jpg

图6-48 从一维数组中删除元素

978-7-111-40983-0-Chapter06-49.jpg

图6-49 从二维数组中删除元素