matlab中的模糊集联合与交集

时间:2016-07-24 21:27:44

标签: matlab fuzzy-logic

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中实现这两个模糊集的并集和交集的逻辑。

1 个答案:

答案 0 :(得分:0)

首先澄清一些事情,没有模糊交集或联合操作。有一个无限的交叉和联合家族称为三角规范和三角形的风格。

话虽如此,在经典模糊理论中,"默认"可以说,交叉点被认为是最小的"所有元素,并且联合成为"最大"所有元素。即

\bigcap_i x_i = min(x_i)

如果您只是成对执行操作,那么您可以简单地说

\cap x_2 = min(x_1, x_2)

(和处理工会时类似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