设置首页收藏本站
授权版本:2024_10
开启左侧

Halcon数组

[复制链接]
hjhjik 发表于 2024-9-25 15:40:27 | 显示全部楼层 |阅读模式
Halcon中的数组,也就是tuple,与C语言类似。
变量类型:int,double,string等类型。
变量长度:如果长度为1,则可以作为正常变量使用,第一个索引值为0,最大的索引值为变量长度减1。
赋值符号:一个冒号加一个等号 “     :=     ”  。
Halcon中,数组元素不允许复合结构,因此不可将图片、区域、数组等符合结构追加到数组中,tuple只能是1xN维的数值类型。

定义数组:
数组的初始化
  1. A:=[1,2,3,4]  
复制代码

定义空数组,逐渐追加元素
  1. A :=[ ]
  2. for i :=0 to 4 by 1      
  3. A:= [A,i]
  4. 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)
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
halcon2016 发表于 2024-9-25 16:01:37 | 显示全部楼层
请发些有质量的帖子
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
雾里看花 发表于 2024-9-26 08:22:19 | 显示全部楼层
感谢分享
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
wenbo_bob 发表于 2024-9-27 14:30:41 | 显示全部楼层
学习一下下
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表