LabVIEW編程技巧——如何實現(xiàn)集合函數(shù)
Labview的數(shù)組操作功能是非常強(qiáng)大的,除了數(shù)組函數(shù)選板中提供的函數(shù)之外,信號處理函數(shù)選板中的函數(shù)實際上也是在操作數(shù)組,但是并沒有提供直接的集合函數(shù)。在MathScript中,LabVIEW提供了幾個集合相關(guān)函數(shù)。

下面我我將利用OPENG中的數(shù)組函數(shù)實現(xiàn)針對一維數(shù)組的集合函數(shù),并利用MathScript對其進(jìn)行驗證。
一、uNIque集合函數(shù)
我首先要介紹的是unique函數(shù)。unique本意是唯一的意思,對輸入的數(shù)組去掉重復(fù)的元素,形成新的數(shù)組,新數(shù)組中的所有元素都是唯一的,各不相同。
OPENG中直接提供了這樣的函數(shù),函數(shù)名為“去除數(shù)組中的重復(fù)元素”。函數(shù)除了返回去除重復(fù)元素后的數(shù)組外,還同時返回了刪除元素的索引。具體用法見下圖。

可以看出MathScript的Sets_unique函數(shù)對數(shù)組進(jìn)行了排序而OPENG的“去除數(shù)組中的重復(fù)元素”函數(shù)并沒用進(jìn)行排序,依然保持原來的次序。
二、Union集合函數(shù)
Union集合函數(shù)實現(xiàn)的是兩個集合的并集。對LABVIEW來說,是合并兩個一維數(shù)組,并去除其中重復(fù)元素。具體用法見下圖:

在一、二中,我使用了OPENG中的“去除數(shù)組中重復(fù)元素”函數(shù),該函數(shù)的程序框圖如下圖所示:

該函數(shù)是通過搜索數(shù)組元素的方法實現(xiàn)的。首先構(gòu)造一個相同類型的空數(shù)組,對于輸入數(shù)組中的沒一個元素,搜索構(gòu)造的數(shù)組中是否存在該元素,如果不存在,則該元素進(jìn)入構(gòu)造的數(shù)組。
三、intersect集合函數(shù)
intersect集合函數(shù)返回兩個集合的交集。對于兩個一維數(shù)組,intersect函數(shù)返回兩個數(shù)組中的公共元素。

四、DIFF集合函數(shù)
DIFF函數(shù)返回兩個集合中去除公共部分余下的元素。OPENG中的“過濾一維數(shù)組”函數(shù)實現(xiàn)的正好是DIFF函數(shù)的功能,如下圖所示:

五、XOR集合函數(shù)
XOR集合函數(shù)返回一個集合,該集合中的元素要么屬于輸入集合1,要么屬于輸入集合2.。對于LABVIEW中的兩個一維數(shù)組,返回兩個數(shù)組合并后去除公共元素后的數(shù)組。

上面我利用OPENG中的數(shù)組函數(shù)實現(xiàn)了集合中的幾個常用函數(shù),顯然MATHSCRIPT要方便的多。而且MATHSCRIPT中的集合函數(shù)一般都支持矩陣運算,因此對于二維數(shù)組同樣適用。同時MATHSCRIPT已經(jīng)支持RT結(jié)構(gòu),相信其用途會越來越廣。
評論