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 的公理。
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 的公理。