导读:
来复习一下高中数学,不过这里勇哥不用纸和笔,而是用halcon做为平台来玩玩。 一切要与机器视觉联系起来才更有趣味。 因此,这个系列的数学课是专门给halcon平台的视觉程序员看的哦。
重要知识点:
(1) 一般的,对于两个集合A、B的任何一个元素都是集合B的元素,我们就说这两个集合有包含关系,称集合A为集合B的子集(subset),记做
A⊆B(或者B⊇A),读做“A包含于B”(或者“B包含A”)
(2) 如果集合A是集合B的子集(A⊆B),且集合B是集合A的子集(B⊆A)。此时集合A与集合B的元素是一样的,因此,集合A与集合B相等,记作: A=B
(3) 如果集合A⊆B,但存在元素x∈B,且x∉A,我们称集合A是集合B的真子集(proper subset),记作:
(4) 我们把不包含任何元素的集合叫空集(empty set),记为Φ, 并规定:空集是任何集合的子集
(5)
集合并集(union set) A∪B
集合交集(intersection set) A∩B
集合补集(complementary set) ∁UA
对于一个集合A,由全集U中不属于集合A的所有元素组成的集合称为集合A相对于全集的补集(complementary set),简称为集合A的补集,记作
即:∁UA={x|x∈U,且x∉A}
(6)
我们把含有限个元素的集合A叫做有限集,用card来表示有限集合A中元素的个数。
例如,A={a,b,c} 则card(A)=3
有限集合中的元素个数要去掉重复的元素。
一般地,对任意两个有限集合A、B,有:
card(A∪B)=card(A)+card(B)-card(A∩B)
(7)
halcon的tuple(元组)本身就支持集合运算
例如:A⊆B,A=B,x∈B,x∉A,真子集判断,空集判断,A∪B,A∩B,∁UA
(8)
halcon的tuple支持各种数据类型,包括各种数据类型混合的的数据的集合运算。
下面程序中演示了,对于整数、字符串、整数与字符串混合的集体运算都是正确的。
还是很强的哦。
************p6 1.1.2集合间的关系******************************* *一般的,对于两个集合A、B的任何一个元素都是集合B的元素,我们就说 *这两个集合有包含关系,称集合A为集合B的子集(subset),记做 *A⊆B(或者B⊇A),读做“A包含于B”(或者“B包含A”) *如果集合A是集合B的子集(A⊆B),且集合B是集合A的子集(B⊆A)。此时集合A与 *集合B的元素是一样的,因此,集合A与集合B相等,记作: A=B *如果集合A⊆B,但存在元素x∈B,且x∉A,我们称集合A是集合B的真子集(proper subset), *记作:.... 此符号无法打出,见教材 *我们把不包含任何元素的集合叫空集(empty set),记为Φ *并规定:空集是任何集合的子集 *集合A为集合B的子集(subset) dev_clear_window() A:=[1,2,3] B:=[1,2,3,4,5,6,7,8] A2:=[1,2,3] tuple_intersection(A,B,Intersection1) dev_get_window(WindowHandle) if(A=Intersection1) disp_message(WindowHandle, 'A⊆B', 'window', 12, 12, 'blue', 'true') else disp_message(WindowHandle, 'not (A⊆B)', 'window', 12, 12, 'red', 'true') endif *集合A与集合B相等 dev_clear_window() if(A=A2) disp_message(WindowHandle, 'A=A1', 'window', 12, 12, 'blue', 'true') else disp_message(WindowHandle, 'not (A=A1)', 'window', 12, 12, 'red', 'true') endif *集合A是集合B的真子集(proper subset) A:=[1,2,3] B:=[1,2,3,4,5,6,7,8] *B:=[1,2,3] tuple_difference(B,A,Difference2) tuple_length(Difference2, len1) dev_clear_window() if(len1>0) disp_message(WindowHandle, '集合A是集合B的真子集', 'window', 12, 12, 'blue', 'true') else disp_message(WindowHandle, '集合A不是集合B的真子集', 'window', 12, 12, 'red', 'true') endif *空集是任何集合的子集 A:=[] B:=[1,2,3] tuple_intersection(A,B,Intersection1) dev_clear_window() dev_get_window(WindowHandle) if(A=Intersection1) disp_message(WindowHandle, 'A⊆B', 'window', 12, 12, 'blue', 'true') else disp_message(WindowHandle, 'not (A⊆B)', 'window', 12, 12, 'red', 'true') endif A:=[3,5,6,8] B:=[4,5,7,8] C:=[5] *集合并集(union set) A∪B tuple_union(A, B, Union) *集合交集(intersection set) A∩B tuple_intersection(A,B,Intersection) *集合补集(complementary set) ∁UA tuple_difference(B,C,Difference) *计算两个集合的对称差值,这个结果跟tuple_difference是一样的 tuple_symmdiff(B,C,SymmDiff) *下面测试两者的差别 B1:=[0,1,3,3,5] C1:=[2,3,5,10] tuple_difference(B1,C1,Difference1) tuple_symmdiff(B1,C1,SymmDiff1) *下面试试字符串数据的集合 A:=['one','two','three','four'] B:=['two','three','four','five','six','seven','eight','nine','ten'] C:=['two'] *集合并集(union set) A∪B tuple_union(A, B, Union) *集合交集(intersection set) A∩B tuple_intersection(A,B,Intersection) *集合补集(complementary set) ∁UA tuple_difference(B,C,Difference) *下面试试混合数据类型的集合 A:=['one',2,'three',4] B:=[2,'three',4,'five','six','seven','eight','nine','ten'] C:=[2] *集合并集(union set) A∪B tuple_union(A, B, Union) *集合交集(intersection set) A∩B tuple_intersection(A,B,Intersection) *集合补集(complementary set) ∁UA tuple_difference(B,C,Difference) **例8* *设U={x|x是小于9的正整数}, A={1,2,3} B={3,4,5,6}, 求∁UA, ∁UB *U为全集,即U中有我们所研究问题的全部元素 U:=[1,2,3,4,5,6,7,8] A:=[1,2,3] B:=[3,4,5,6] tuple_difference(U,A,cua) tuple_difference(U,B,cub) *正确答案为:∁UA=[4,5,6,7,8] ∁UB=[1,2,7,8] ******下面画并、交、补三种运算的venn图******************* *并运算 dev_clear_window() gen_ellipse (ROI_0, 160.093, 123.821, rad(-5.46263), 49.7995, 44.5658) gen_ellipse (ROI_1, 160.14, 191.21, rad(-180), 48.0242, 30.72) dev_set_draw('fill') dev_set_color('yellow') union2 (ROI_0, ROI_1,TMP_Region) dev_display(TMP_Region) dev_set_draw('margin') dev_set_color('blue') dev_set_line_width(3) dev_display(ROI_0) dev_display(ROI_1) disp_message(WindowHandle, 'A', 'window', 152, 102, 'black', 'true') disp_message(WindowHandle, 'B', 'window', 159, 203, 'black', 'true') disp_message(WindowHandle, 'A∪B', 'window', 222, 141, 'black', 'true') *绘制数轴表示集合运算 *P10 例5 *设集合A={x|-1<x<2},集合B={x|1<x<3},求A∪B *A∪B={x|-1<x<2}∪{x|1<x<3}={x|-1<x<3} *课本图片:并 read_image(Image, 'tu1.1.3.png') dev_display(Image) stop() *课本图片:交 read_image(Image, 'tu1.1.4.png') dev_display(Image) stop() *课本图片:补 read_image(Image, 'tu1.1.5.png') dev_display(Image) stop() ****计算集合card,即元素数量************************** *一般地,对任意两个有限集合A、B,有: *card(A∪B)=card(A)+card(B)-card(A∩B) A:=[3,5,6,8] B:=[4,5,7,8] tuple_length(A, len1) tuple_length(B, len2) tuple_intersection(A, B, Intersection2) tuple_length(Intersection2, len3) cardAUB:=len1+len2-len3
下面是演示程与资源的下载:
资源价格:免费
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!

