Halcon 元组/数组基本操作
** 元组/数组 tuple
*******数组创建与字典*******
** 创建一个数组
A := [1,3,45,6]
A[0] := 1
A[1] := 2
** 定义一个key value字典类型
create_dict (DictHandle)
set_dict_tuple (DictHandle,
set_dict_tuple (DictHandle,
*******数组定义*******
A:=[]
*空数组--[]
A1:=[1]
*1
A2:=[2,1]
*[2,1]
A3:=[A1,[1,2,3]]
*[1,1,2,3]
B:= A3 + 1
*[2,2,3,4] 每一个数加1
B1:=A3*2
*[2, 2, 4, 6] 每一个数*2
*******数组相加与长度*******
C:=[1,2,3,4,5]
B:=[10,20,30,40,50]
D:=B+C
*数组相加(前提是两个数组元素个数要一样)
*每个对应的元素进行相加
*D的值是[11, 22, 33, 44, 55]
len := |D|
*求数组的长度即数组的元素个数
*len:=5
tuple_length (D,len1)
*求数组的长度即数组的元素个数
*len1:=5
value := D[2]
*通过下标获取元素值,下标是从0开始的
*value :=33
*******数组赋值、生成*******
A:=[10,20,30,40,50]
A[6]:=100
*赋值 [100, 20, 30, 40, 50, 0, 100]
A[0,2,3]:=99
*批量赋值 [99, 20, 99, 99, 50, 0, 100]
*下标是要赋值的位置序号
B:=[10:15]
*[10, 11, 12, 13, 14, 15]
*B的值为10到15的连续值
B1:=[10:2:20]
*[10, 12, 14, 16, 18, 20]
*B1的值为10到20的连续值,步长为2,步长可以为负数
*******数组交并集、替换*******
A:=[10,30,20,40,50]
B:=[1,30,20,4,5]
* 交集
tuple_union(A,B,C)
*C的值为 [1, 4, 5, 10, 20, 30, 40, 50]
*两个数组进行合并操作,并自动排序【对两个数组进行并集操作】
*注意:合并时重复的元素只出现一次
* 并集
tuple_intersection(A,B,D)
*D的值为 [20, 30]
*对两个数组进行交集操作,并自动排序
* 替换
tuple_replace (A, [0,2], [
*E的值为 [
*替换操作
*参数2:要替换的位置序号
*参数3:要替换的值
*参数4:替换后保存的数组变量
* 插入
tuple_insert (A, 3,
*F的值为 [10, 30, 20,
*插入元素
*参数2:插入的位置序号
*参数3:插入的值
*参数4:插入后保存的数组变量
*******数组的初始化,随机*******
A:=[1,2,3,4]
*定义空数组,逐渐追加元素
A :=[ ]
for i :=0 to 4 by 1
A:= [A,i]
endfor
* [0, 1, 2, 3, 4]
*连接两个tuple数组到第三个tuple中
tuple1[0] := 1
tuple2[0] := 3
* 链接
tuple_concat(tuple1,tuple2, Concat)
*[1, 3]
* 随机生成
tuple_rand(5,tmp)
* [0.259849, 0.537071, 0.999261, 0.649518, 0.60093]
* 生成一个指定长度和初始化值的数组
tuple_gen_const(5, 100, Result )
* [100, 100, 100, 100, 100]
* 初始化数组,指定开始值,终止值,步长,得到sequence
tuple_gen_sequence (1, 20, 2, Sequence)
* [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]