halcon-tuple元组计算
在HDevelop中
算数
a:=[-10,100,130] t:=[-0.5,0.5,1] tuple_abs (a, Abs) *计算一个元组的绝对值 *[10, 100, 130] tuple_acos (t, ACos) *计算一个元组的反余弦 *参数1:输入元组。 限制:-1<=t<=1 *[2.0944, 1.0472, 0.0] tuple_add (a, t, Sum) *两个元组相加 *[-10.5, 100.5, 131] tuple_asin (t, ASin) *计算一个元组的反余弦 *参数1:输入元组。 限制:-1<=t<=1 *[-0.523599, 0.523599, 1.5708] tuple_atan (a, ATan) *计算一个元组的反正切 *[-1.47113, 1.5608, 1.5631]
y:=[10,-10,10,5,0,10] x:=[10,10,20,0,5,-10] a:=[10.5,-10.5,0,3.0] b:=[3.1415, 0,1.5708, 0.785] tuple_atan2 (y, x, ATan) *计算一个元组四个象限的反正切 *参数1:输入y值的元组 *参数2:输入x值的元组 *参数3:返回元组的反正切--单位:弧度 *说明:tanA=y/x, 则 A=arctany/x *[0.785398, -0.785398, 0.5235] tuple_ceil (a, Ceil) *计算一个元组的上限函数--大于或等于元素的最小整数 *上限函数始终作为浮点数返回 *[11.0, -10.0, 0.0, 3.0] tuple_cos (b, Cos) *计算一个元组的余弦 *参数1:单位:弧度 *[-1.0, 1.0, -3.67321e-006, 0.707388] tuple_cumul (y, Cumul) *计算一个元组的累计和 *[10, 0, 10, 15, 15, 25]
y:=[1,2,10,5,0,10] x:=[10,10,20,0,5,-10] a:=[10.5,-10.5,0,3.0] b:=[3.1415, 0,1.5708, 0.785] c:=[2,1,-2,3,5,-10] tuple_deg (b, Deg) *将一个元组从弧度转换为角度 tuple_div (x, c, Quot) *将两个元组相除 *[5, 10, -10, 0, 1, 1] tuple_exp (y, Exp) *计算以e为底的指数【eⁿ】 *参数1:指数 *[2.71828, 7.38906, 22026.5, 148.413, 1.0, 22026.5] tuple_fabs (a, Abs) *计算一个元组(例如浮点数)的绝对值 *[10.5, 10.5, 0.0, 3.0] tuple_floor (a, Floor) *返回小于等于元素的整数---地板函数 *[10.0, -11.0, 0.0, 3.0]
y:=[1,2,10,5,0,10] c:=[2,1,-2,3,5,-10] tuple_ldexp (y, c, Ldexp) *计算两个元组的返回长双精度指数函数 *[4.0, 4.0, 2.5, 40.0, 0.0, 0.00976563] *计算公式:看下面
b:=[2,1,20,3,5,10] tuple_log (b, Log) *自然对数 *自然对数是以常数e为底数的对数,记作lnN(N>0)
y:=[1,2,10,5,0,10] b:=[2,1,20,3,5,10] x:=[3.5,6,8.9,4,1.1,6.5] c:=[2.8,1.4,20.3,3.5,5.9,10.0] tuple_log10 (b, Log) *底为10的对数 *[0.30103, 0.0, 1.30103, 0.477121, 0.69897, 1.0] tuple_max2 (y, b, Max2) *对应位置的最大值 *[2, 2, 20, 5, 5, 10] tuple_min2 (y, b, Min2) *对应位置的最小值 *[1, 1, 10, 3, 0, 10] tuple_mod (y, b, Mod) *功能:整型数相除的余数 *[1, 0, 10, 2, 0, 0] tuple_fmod (x, c, Fmod) *浮点数相除的余数 *[0.7, 0.4, 8.9, 0.5, 1.1, 6.5] tuple_mult (b, x, Prod) *两个元组相乘 *[7.0, 6, 178.0, 12, 5.5, 65.0] tuple_neg (y, Neg) *取反---乘-1
y:=[1,2,10,5,0,10] b:=[2,1,20,3,5,10] x:=[3.5,6,8.9,4,1.1,6.5] c:=[2.8,1.4,20.3,3.5,5.9,10.0] tuple_pow (b, y, Pow) *冥函数 *参数1:底 *参数2:指数 *[2.0, 1.0, 1.024e+013, 243.0, 1.0, 1e+010]
指数为常数的函数称为幂函数。例如函数y=x0 、y=x1、y=x2、y=x-1等都是幂函数
y:=[1,2,10,5,0,10] b:=[2,1,20,3,5,10] x:=[3.5,6,8.9,4,1.1,6.5] c:=[2.8,1.4,20.3,3.5,5.9,10.0] a:=[90,180,45,0,30,270] a1:=[1.5708, 3.14159, 0.785398, 0.0, 0.523599, 4.71239] d:=[1,-2,10,-5,0,10] tuple_rad (a, Rad) *角度转换为弧度 *[1.5708, 3.14159, 0.785398, 0.0, 0.523599, 4.71239] tuple_sgn (d, Sgn) *计算一个元组的正负 *[1, -1, 1, -1, 0, 1] tuple_sin (a1, Sin) *正弦-->sin函数 *参数1:单位:弧度 *[1.0, 2.65359e-006, 0.707107, 0.0, 0.5, -1.0] tuple_sqrt (b, Sqrt) *平方根(二次方根) *[1.41421, 1.0, 4.47214, 1.73205, 2.23607, 3.16228] tuple_sub (x, y, Diff) *相减 *[2.5, 4, -1.1, -1, 1.1, -3.5]
d:=[1,-2,10,-5,0,10] tuple_tan (d, Tan) *计算一个元组的正切
位操作
a:=[3,2,1] b:=[4,2,3] tuple_band (a, b, BAnd) *位与-->对应位都是1才是1 *[0, 2, 1] tuple_bor (a, b, BOr) *按位或-->对应位有1就是1 *[7, 2, 3] tuple_bnot (a, BNot) *逐位取逻辑非 *[-4, -3, -2] tuple_bxor (a, b, BXor) *异或-->如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0 *[7, 0, 2] tuple_lsh (a, b, Lsh) *逐位左移 *参数1:待移位的元组 *参数2:移位次数 *如果没有发生溢出,此操作相当于乘以2^b *如果a为负值,结果取决于硬件 *如果移位为负数或大于32,则结果未定义 *[48, 8, 8] tuple_rsh (a, b, Rsh) *逐位右移 *相当于除以2^b *如果a为负值,结果取决于硬件 *如果移位为负数或大于32,则结果未定义 *[0, 0, 0]
比较
a:=[3,2,1] b:=[4,2,3] c:=[4,3,3] tuple_equal (a, b, Equal) *两个元组是否相同 *0--不同 1--相同 tuple_greater (b, c, Greater) *一个元组是否大于另一个元组 *按顺序比较 *0--b不大于c 1--b大于c tuple_greater_equal (b, c, Greatereq) *一个元组是否大于等于另一个 *0--b<c 1--b>=c tuple_less (b, c, Less) *一个元组是否小于另一个元组 0--b不小于c 1--b小于c tuple_less_equal (b, c, Lesseq) *一个元组是否小于等于另一个 *0--b>c 1--b<=c tuple_not_equal (b, c, Nequal) *两个元组是不是不等 * 0--相等 1--不等
转换
a:=[65,97,49] b:=[4.5,-2.9,3.4567] c:='6814031a' d:='12345678' e:=['A', 'a', '1'] tuple_chr (a, Chr) *根据ASCII码将整型元组转换为字符 *参数1:ASCII吗 *['A', 'a', '1'] tuple_chrt (a, Chrt) *根据ASCII码将整型元组转换为字符串 *'Aa1' tuple_int (b, Int) *一个元组转换为一个整型元组 *小数部分直接抛弃,不四舍五入 *[4, -2, 3] tuple_is_number (c, IsNumber) *检测一个字符串元组是否表示数字 * 1--数字字符串 0--非数字字符串 tuple_number (d, Number) *将一个字符串元组转换为一个数值 *如果d不是数字字符串,就返回原字符串 *12345678 tuple_ord (e, Ord) *将长度为1的字符串的元组转换为它们相应的ASCII码元组 *[65, 97, 49]
a:=[-65,97.8,49,0] f:='liming' b:=[-65,97.8,49.2,0] c:=-123456.8763 d:=254 e:=0xff tuple_ords (f, Ords) *将一个字符串的元组转换为它们ASCII码的元组 *[65, 97, 49] tuple_real (a, Real) *转换为浮点数 *[-65.0, 97.8, 49.0, 0.0] tuple_round (b, Round) *转换为整型数--四舍五入 *[-65, 98, 49, 0] tuple_string (f, '-10.3s', String) *转换为字符串 *参数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个字符 'lim '
创建
a:=[1,2,3] b:=[10,20,30] tuple_concat (a, b, Concat) *合并 *[1, 2, 3, 10, 20, 30] tuple_gen_const (5, 0, Newtuple) *创建一个特殊长度的元组和初始化它的元素 *参数1:新元组长度 *参数2:用于初始化元组元素的常量 *参数3:新元组 *[0, 0, 0, 0, 0] tuple_rand (6, Rand) *返回0到1之间的随机数元组 *参数1:要生成的元组的长度 *参数2:随机数的元组 *[0.693658, 0.168389, 0.895945, 0.365523, 0.332642, 0.601562]
元素顺序
a:=[1,2,3] b:=[10,20,30] c:=[500,200,400] tuple_inverse (b, Inverted) *将一个元组反置(反转) *[30, 20, 10] tuple_sort (c, Sorted) *按升序排序 *[200, 400, 500] tuple_sort_index (c, Indices) *先按升序排序,返回排序后的元素在原元组中的索引(从0开始) *[1, 2, 0]
特征
a:=[1,2,3] b:=[10.2,20,30.4,80,90,60,50] c:=[500,200,400] tuple_deviation (a, Deviation) *返回元组元素的标准差 *1.0 tuple_length (a, Length) *返回元组元素数目 *3 tuple_max (c, Max) *返回元组的最大元素 *500 tuple_min (a, Min) *返回元组的最小元素 *1 tuple_mean (a, Mean) *返回元组的平均值 *2.0 tuple_median (b, Median) *返回一个元组元素的中值 *50 tuple_sum (a, Sum) *返回所有元素的和 *6
逻辑运算
a:=[1,2,3,0,4] b:=[2,1,4,5,0] c:=[5,0,3,0,0] tuple_and (a, b, And) *数值与--对应位数值都不等于0才是1 *[1, 1, 1, 0, 0] tuple_not (a, Not) *数值非---非0返回0,0返回1 *参数1:只能包含整数 *如果输入元组为空,则会引发异常 *[0, 0, 0, 1, 0] tuple_or (a, c, Or) *数值或--对应位有非0返回1,都是0返回0 *[1, 1, 1, 0, 1] tuple_xor (a, c, Xor) *数值异或 *对应位一个是0一个不是0时其结果是1,否则结果为0 *【相同是0,不同是1】 *[0, 1, 0, 0, 1]
选择
a:=[3,'liming',5,6,1,2,3,'liming',0] b:=[3,'liming'] c:=[7,1] tuple_find (a, b, Indices) *返回参数2在参数1中出现的索引 *如果没有返回-1 *如果其中一个或两个输入元组都为空,则运算符返回一个空元组 *允许混合字符串和数字 *[0, 6] tuple_first_n (a, 5, Selected) *选择前面的元素,直到索引n[包含索引n的元素] *参数2:索引n *索引从0开始,总共返回索引+1个元素 *如果参数1为空,则会引发异常 *[3, 'liming', 5, 6, 1, 2] tuple_last_n (a, 3, Selected1) *选择从索引“n”开始到元组末尾的所有元素,包含索引n的元素 *元组元素的索引从0开始,如果Tuple为空,则会引发异常 *[6, 1, 2, 3, 'liming', 0] tuple_remove (a, c, Reduced) *移出索引n的元素 *参数2:需要移除的索引 *元组元素的索引从0开始,即第一个元组元素的索引为0。将忽略超出范围的重复项和索引 *如果元组为空,则运算符返回一个空元组 *[3, 5, 6, 1, 2, 3, 0] tuple_select (a, c, Selected2) *返回指定索引的元素 *参数2:需要返回的索引 *元组元素的索引从0开始 *如果Tuple为空,则会引发异常 *['liming', 'liming'] tuple_select_range (a, 3, 5, Selected3) *返回指定索引区域的元素 *参数2:起始索引 *参数3:终止索引 *参数2和参数3的元素都包含;如果索引相等,则只选择一个元素 *如果Leftindex和Rightindex是空元组,则运算符返回空元组。如果这些参数或元组中只有一个是空元组,则会引发异常 *[6, 1, 2] d:=[4,30,5,6,1,2,3,20,0] tuple_select_rank (d,4, Selected4) *先升序排序,再返回排序后指定索引的元素 *参数2:索引 *4 e:=['abc','liming','mKbc','5842'] f:=[1,2,0,3] tuple_str_bit_select (e, 1, Selected5) *返回指定索引的字符 *参数2:索引 *['b', 'i', 'K', '8'] g:=[0,0,1,1,1,2,0,1] tuple_uniq (g, Uniq) *连续相同元素只取一个 *允许在输入元组中混合字符串和数字 *[0, 1, 2, 0, 1]
字符串运算符
a:=['abc,mkb/jkb','tangu,liming/qwe'] b:=[',','/'] tuple_split (a, b, Substrings) *分割字符串 *参数2:分隔符 * 如果就一个,那么所有元素都用这个分隔符 * 如果参数2与参数1元素个数相同,那么一一对应使用分隔符 *['abc', 'mkb/jkb', 'tangu,liming', 'qwe'] c:=[3,5] tuple_str_first_n (a, c, Substring) *从起始字符开始截取到指定索引位置(包含索引) *参数2:索引 *['abc,', 'tangu,'] tuple_str_last_n (a, c, Substring1) *从指定索引到末尾进行截取 *参数2:索引 *[',mkb/jkb', ',liming/qwe'] c1:=[',','/'] a1:=['ab/c,mk,b/jkb','tan/gu,liming/q,we'] tuple_strchr (a1, c1, Position) *返回指定字符的索引--找到左边第一个匹配的字符就停止 *参数2:指定字符 *[4, 3] tuple_strrchr(a1, c1, Position1) *返回指定字符的索引--找到右边第一个匹配的字符就停止 *[7, 13] a2:=['liming李明','tangu塘沽'] tuple_strlen (a2, Length) *返回字符串的长度 *一个汉子算一个字符 *[8, 7] a3:=['lim塘沽ing塘沽sgfe','ta李明ngu李明sdfghj'] c2:=['塘沽','李明'] tuple_strrstr (a3, c2, Position2) *返回指定字符串的索引--找到右边第一个匹配的字符串就停止 *参数2:指定字符串 *[8, 7] tuple_strstr(a3, c2, Position3) *返回指定字符串的索引--找到左边第一个匹配的字符串就停止 *参数2:指定字符串 *[3, 2]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
2019-03-16 C++多文件编程--类的声明和实现分开
2019-03-16 C++函数包装模板function
2019-03-16 C----函数