LabVIEW編程技巧——如何實現集合函數
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結構,相信其用途會越來越廣。
評論