不使用遍歷,如何將Tuple裏的負數元素全都變爲0

 

假設有一個元組 a := [566, 52, -15, 50, -18, 0],如何將裏面的負數都置爲0,其他元素不變呢?

 

常見的思路是對元組的元素進行遍歷。如果發現某個元素小於0,就強制給它賦值爲0 。

 

其實Halcon裏面有一些算子組合,可以更簡潔地實現這個目的。

 

 1 a := [566, 52, -15, 50, -18, 0]
 2 tuple_length (a, Length)
 3 *生成一個所有元素都爲0,長度爲Length的新元組
 4 tuple_gen_const (Length, 0, Newtuple)
 5 tuple_greater_equal_elem (a, Newtuple, Greatereq)
 6 tuple_mult (Greatereq, a, a_greater)
 7 
 8 *下面的程序可以將a中的所有的正數元素都強制置爲0
 9 tuple_less_equal_elem (a, Newtuple, Lesseq)
10 tuple_mult (Lesseq, a, a_Lesseq)

其中:

a_greater  :=  [566, 52, 0, 50, 0, 0]

a_Lesseq  :=  [0, 0, -15, 0, -18, 0]

 

其中涉及到了兩個重要算子,分別是:

tuple_greater_equal_elem :測試一個元組是否按元素大於或等於另一個元組。如果是,則 Greatereq 中相應的元素爲1,否則爲0。

 

tuple_less_equal_elem :測試一個元組是否按元素小於或等於另一個元組。如果是,則 Lesseq 中相應的元素爲1,否則爲0。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章