Halcon中的数组,也就是tuple,与C语言类似。
变量类型:int,double,string等类型。
变量长度:如果长度为1,则可以作为正常变量使用,第一个索引值为0,最大的索引值为变量长度减1。
赋值符号:一个冒号加一个等号 “ := ” 。
Halcon中,数组元素不允许复合结构,因此不可将图片、区域、数组等符合结构追加到数组中,tuple只能是1xN维的数值类型。
定义数组:
数组的初始化
定义空数组,逐渐追加元素
- A :=[ ]
- for i :=0 to 4 by 1
- A:= [A,i]
- endfor
复制代码
连接两个tuple数组到第三个tuple中
tuple1[0] := 1
tuple2[0] := 3
tuple_concat(Tump0,Tump1, Concat)
返回一个随机数tuple数组,数值分布在[0,1)之间 tuple_rand(5,tmp)
生成一个指定长度和初始化值的数组 tuple_gen_const(5, 100, Result )
初始化数组,指定开始值,终止值,步长,得到sequence tuple_gen_sequence (1, 20, 2, Sequence)
数组求极值:
数组特征:
tuple_max(Array,Max) 求数组元素的最大值
tuple_min(Array,Min) 求数组元素的最小值
tuple_mean(Array,Mean) 求数组元素的平均值
tuple_median(Array,Mean) 求数组元素的中值
tuple_length(Array,Length) 获取数组的长度
tuple_abs(Array,Abs) 数组元素的绝对值
tuple_Fun(Array,Fun_array ) 对数组元素求Function,这里的Fun是一个宏替换,可以是pow,sincos,tan,log等初等函数。也可neg取反,rad转成弧度
tuple_deviation (a, Deviation) 返回元组元素的标准差
tuple_length (a, Length) 返回元组元素数目
数组选择:
tuple_find(Array, b, Indices) 返回参数2在参数1中出现的索引,如果没有返回-1
tuple_first_n(Array, n, Selected) 选择前面的元素,直到索引n,就会返回n+1个元素
tuple_last_n(Array, n, Selected1) 选择从索引n开始到元组末尾的所有元素,包含索引n的元素
tuple_remove(Array,c,Reduced) 移出指定索引的元素,索引可以是一个数组
tuple_select(Array,Index,Selected) 返回指定索引的元素
tuple_select_range(Array,Index1,Index2,Selected) 返回指定的起始索引,终止索引区域内的元素
tuple_select_rank(Array,Index,Selected) 先升序排序,再返回排序后指定索引的元素 对两个数组进行操作,输出一个数组
tuple_add(Array1,Array2,Sum) 两个数组相加
tuple_sub(Array1,Array2,Sub) 两个数组相减
tuple_and(Array1,Array2,And) 将两个数组元素逻辑与
tuple_or(Array1,Array2,Or) 将两个数组元素逻辑或
tuple_mult(Array1,Array2, result) 两个数组元素乘积
tuple_neg(Array1,Array2) 对所有元素乘以-1
切片和序列操作:
tuple_select_range(Array,Index1,Index2,ArraySelect) 取一个数组的部分连续值,组成新数组
tuple_concat(Array1,Array2,Concat) 将两个数组相连接
排序操作:
tuple_sort(Array,Sorted) 给数组元素升序排序
tuple_sort_index(Array,Indexs) 数组排序,返回升序的索引
tuple_inverse(Array,Inverted) 反转一个数组
tuple_find(Array1,Array2,Indices) 在数组1中寻找数组2
数组的比较:
tuple_equal(Array1,Array2,Equal) 比较两个数组是否相等,返回一个数值
tuple_not_equal(Array1,Array2,Equal) 比较两个数组是否相等,返回一个数值
tuple_greater(Array1,Array2,Greater)
tuple_max2(Array1,Array2,Max2) 比较两个数组的对应元素,取每个大值放于结果中
tuple_min2(Array1,Array2,Min2) 比较两个数组的对应元素,取每个小值放于结果中
数组转换:
tuple_chr(Array1,Array2) 根据ASCII码将整型元组转换为字符数组
tuple_chrt(Array1,Array2) 根据ASCII码将整型元组转换为字符串
tuple(b,Int) 一个元组转换为一个整型元组,小数部分直接抛弃,不四舍五入
tuple_real(a, Real) 转换为浮点数
tuple_round (b, Round) 转换为整型数,四舍五入
tuple_ord (e, Ord) 将长度为1的字符串的元组转换为它们相应的ASCII码元组
tuple_ords (f, Ords) 将一个字符串的元组转换为它们ASCII码的元组
tuple_string (str1, '-10.3s', str2)* 转换为字符串
* 参数1:输入
* 参数2:格式
* 数值时:
* '10.2f' 总长度10位,小数点2位 f表示浮点数
* '-10.2f' -表示左对齐 否则右对齐
* '.7f' 总长度不限,小数点7位
* '+10.3f' +表示前面加上+-号
* 'x' 转化为小写16进制
* 'X' 转化为大写16进制
* '.8d' 转化为十进制,总长度8位
* 字符串时:
* '10s' 转换为总长度10位的字符串
* '-10s' -表示左对齐 否则右对齐
* '-10.3s' 总长度10位,截取前3个字符
tuple的基本操作:
*1.数组定义和赋值
*定义空数组
Tuple:=[]
*指定数据定义数组
Tuple1:=[1,2,3,4,5,6,7,8]
Tuple2:=['A','B','C','D']
*通过数组下标更改指定位置的元素值。
Tuple1[2]:=9
*求数组个数
Number:=|Tuple1|
*合并数组
Union:=[Tuple1,Tuple2]
*提取数组中指定下标的元素
T:=Tuple1[2]
*2.数组字符串运算
*字符串拼接
A1:='你'+'好'
*取字符串长度
Length:=strlen(A1)
*3.三角函数运算和数值函数运算
*弧度转角度
Degree:=deg(1.36)
*角度转弧度
Radian:=rad(90)
*求最小值
val_min:=min(Tuple1)
*求最大值
val_max:=max(Tuple1) |