LabVIEW編程技巧——如何實(shí)現(xiàn)集合函數(shù)
Labview的數(shù)組操作功能是非常強(qiáng)大的,除了數(shù)組函數(shù)選板中提供的函數(shù)之外,信號(hào)處理函數(shù)選板中的函數(shù)實(shí)際上也是在操作數(shù)組,但是并沒有提供直接的集合函數(shù)。在MathScript中,LabVIEW提供了幾個(gè)集合相關(guān)函數(shù)。
下面我我將利用OPENG中的數(shù)組函數(shù)實(shí)現(xiàn)針對(duì)一維數(shù)組的集合函數(shù),并利用MathScript對(duì)其進(jìn)行驗(yàn)證。
一、uNIque集合函數(shù)
我首先要介紹的是unique函數(shù)。unique本意是唯一的意思,對(duì)輸入的數(shù)組去掉重復(fù)的元素,形成新的數(shù)組,新數(shù)組中的所有元素都是唯一的,各不相同。
OPENG中直接提供了這樣的函數(shù),函數(shù)名為“去除數(shù)組中的重復(fù)元素”。函數(shù)除了返回去除重復(fù)元素后的數(shù)組外,還同時(shí)返回了刪除元素的索引。具體用法見下圖。
可以看出MathScript的Sets_unique函數(shù)對(duì)數(shù)組進(jìn)行了排序而OPENG的“去除數(shù)組中的重復(fù)元素”函數(shù)并沒用進(jìn)行排序,依然保持原來的次序。
二、Union集合函數(shù)
Union集合函數(shù)實(shí)現(xiàn)的是兩個(gè)集合的并集。對(duì)LABVIEW來說,是合并兩個(gè)一維數(shù)組,并去除其中重復(fù)元素。具體用法見下圖:
在一、二中,我使用了OPENG中的“去除數(shù)組中重復(fù)元素”函數(shù),該函數(shù)的程序框圖如下圖所示:
該函數(shù)是通過搜索數(shù)組元素的方法實(shí)現(xiàn)的。首先構(gòu)造一個(gè)相同類型的空數(shù)組,對(duì)于輸入數(shù)組中的沒一個(gè)元素,搜索構(gòu)造的數(shù)組中是否存在該元素,如果不存在,則該元素進(jìn)入構(gòu)造的數(shù)組。
三、intersect集合函數(shù)
intersect集合函數(shù)返回兩個(gè)集合的交集。對(duì)于兩個(gè)一維數(shù)組,intersect函數(shù)返回兩個(gè)數(shù)組中的公共元素。
四、DIFF集合函數(shù)
DIFF函數(shù)返回兩個(gè)集合中去除公共部分余下的元素。OPENG中的“過濾一維數(shù)組”函數(shù)實(shí)現(xiàn)的正好是DIFF函數(shù)的功能,如下圖所示:
五、XOR集合函數(shù)
XOR集合函數(shù)返回一個(gè)集合,該集合中的元素要么屬于輸入集合1,要么屬于輸入集合2.。對(duì)于LABVIEW中的兩個(gè)一維數(shù)組,返回兩個(gè)數(shù)組合并后去除公共元素后的數(shù)組。
上面我利用OPENG中的數(shù)組函數(shù)實(shí)現(xiàn)了集合中的幾個(gè)常用函數(shù),顯然MATHSCRIPT要方便的多。而且MATHSCRIPT中的集合函數(shù)一般都支持矩陣運(yùn)算,因此對(duì)于二維數(shù)組同樣適用。同時(shí)MATHSCRIPT已經(jīng)支持RT結(jié)構(gòu),相信其用途會(huì)越來越廣。
評(píng)論