matlab中的模糊集并集和交集

Fuzzy set union and intersection in matlab

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

首先澄清一点,没有模糊交集或并集运算。有一个无限交集和并集族,称为三角范数和三角共范数。

话虽如此,在经典模糊理论中,"default",可以说交集是所有元素的"minimum",并集是"maximum"所有元素。 IE。

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

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

以下是如何使用 matlab / octave 实现 模糊集合并集 的方法,以下是一些流行的模糊并集函数:

让我们用下面的代码实现第一个联合函数,非常简单:

A = containers.Map({1,2,3,4,5}, {0.1,0.3,0.2,0.2,0.6}); # fuzzy set A
B = containers.Map({1,5,6,7,8}, {0.8,0.3,0.2,0.2,0.6}); # fuzzy set B

AUB = containers.Map(A.keys, A.values);    # fuzzy set AUB
for k = keys(B)
    if isKey(AUB, k{1})
        AUB(k{1}) = max(AUB(k{1}), B(k{1}));
    else
        AUB(k{1}) = B(k{1});
    end
end

现在绘制隶属函数 μ(AUB):

plot(cell2mat(A.keys), cell2mat(A.values), 'color', 'r', 'linestyle', 'none');
plot(cell2mat(B.keys), cell2mat(B.values), 'color', 'g', 'linestyle', 'none');
plot(cell2mat(AUB.keys), cell2mat(AUB.values), 'color', 'b', 'linestyle', 'none');
title ("membership function plot for fuzzy union");

同样,我们也有 fuzzy intersection functions 的公理。