导读:
来复习一下高中数学,不过这里勇哥不用纸和笔,而是用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
版权声明:本文为博主原创文章,转载请附上博文链接!


少有人走的路

















