2016-07-24 65 views
0
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中實現這兩個模糊集的並集和交集的邏輯。matlab中的模糊集合並交會

回答

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 
+0

其他流行TNorms是產品規範:'A&b:= A * B'和盧卡西維茨規範:'a和b:= MAX(0,A + b - 1)' –