k = {1,2,3,4,5};
v = {0.1,0.3,0.2,0.2,0.6};
k1 = {1,5,6,7,8};
v1 = {0.8,0.6,0.2,0.2,0.6};
fset1 = containers.Map(k, v);
fset2 = containers.Map(k1, v1);
以上是我的模糊集。我想找到这两个模糊集的并集和交集。我无法想到在matlab中实现这两个模糊集的并集和交集的逻辑。
答案 0 :(得分:0)
首先澄清一些事情,没有单模糊交集或联合操作。有一个无限的交叉和联合家族称为三角规范和三角形的风格。
话虽如此,在经典模糊理论中,"默认"可以说,交叉点被认为是最小的"所有元素,并且联合成为"最大"所有元素。即
如果您只是成对执行操作,那么您可以简单地说
(和处理工会时类似max
)。
我不太清楚你在那里用键和值做什么,但基本上如果你有两个以矢量形式表示的模糊集(即矢量中的每个位置对应一个元素,并且集合中该元素的存在与否分别用1和0表示,[0,1]范围内的模糊值表示该程度的模糊度,然后你需要做的就是获得交集。每个位置的两个向量中的最小值,即
>> f1 = rand([1,10])
f1 =
0.1576 0.9706 0.9572 0.4854 0.8003 0.1419 0.4218 0.9157 0.7922 0.9595
>> f2 = rand([1,10])
f2 =
0.6557 0.0357 0.8491 0.9340 0.6787 0.7577 0.7431 0.3922 0.6555 0.1712
>> fuzzy_intersection = min(f1, f2)
fuzzy_intersection =
0.1576 0.0357 0.8491 0.4854 0.6787 0.1419 0.4218 0.3922 0.6555 0.1712