LabVIEW的数组操作功能是非常强大的,除了数组函数选板中提供的函数之外,信号处理函数选板中的函数实际上也是在操作数组,但是并没有提供直接的集合函数。在MathScript中,LabVIEW提供了几个集合相关函数。

下面我我将利用OPENG中的数组函数实现针对一维数组的集合函数,并利用MathScript对其进行验证。
一、unique集合函数
我首先要介绍的是unique函数。unique本意是唯一的意思,对输入的数组去掉重复的元素,形成新的数组,新数组中的所有元素都是唯一的,各不相同。
OPENG中直接提供了这样的函数,函数名为“去除数组中的重复元素”。函数除了返回去除重复元素后的数组外,还同时返回了删除元素的索引。具体用法见下图。

可以看出MathScript的Sets_unique函数对数组进行了排序而OPENG的“去除数组中的重复元素”函数并没用进行排序,依然保持原来的次序。
二、Union集合函数
Union集合函数实现的是两个集合的并集。对LabVIEW来说,是合并两个一维数组,并去除其中重复元素。具体用法见下图:

在一、二中,我使用了OPENG中的“去除数组中重复元素”函数,该函数的程序框图如下图所示:

该函数是通过搜索数组元素的方法实现的。首先构造一个相同类型的空数组,对于输入数组中的没一个元素,搜索构造的数组中是否存在该元素,如果不存在,则该元素进入构造的数组。
三、intersect集合函数
intersect集合函数返回两个集合的交集。对于两个一维数组,intersect函数返回两个数组中的公共元素。

四、DIFF集合函数
DIFF函数返回两个集合中去除公共部分余下的元素。OPENG中的“过滤一维数组”函数实现的正好是DIFF函数的功能,如下图所示:

五、XOR集合函数
XOR集合函数返回一个集合,该集合中的元素要么属于输入集合1,要么属于输入集合2.。对于LabVIEW中的两个一维数组,返回两个数组合并后去除公共元素后的数组。

上面我利用OPENG中的数组函数实现了集合中的几个常用函数,显然MATHSCRIPT要方便的多。而且MATHSCRIPT中的集合函数一般都支持矩阵运算,因此对于二维数组同样适用。同时MATHSCRIPT已经支持RT结构,相信其用途会越来越广。