2016-04-22 41 views
0

我想計算的MATLAB/Python的模糊關係組成和想知道是否有在MATLAB或Python任何內置的功能,這樣做...組合物中的模糊關係 - MATLAB/Python的

這裏是一個例子:

R1 = [{ 3, 4, .7}, {3, 5, 0}, { 4, 4, 1}, { 4, 5, .1}] 

R2 = [{ 3,3, 0}, { 3, 5, .1}, { 4, 4, 0}, { 4, 5, .6}] 

我試圖計算:

R1oR2 

我在尋找 '最大最小' 和 '最大 - 產品' 的方法...

回答

0

好的......因爲沒有人給一個答案,我結束了我自己寫它......這裏的Python代碼:

import numpy as np 

# Max-Min Composition given by Zadeh 
def maxMin(x, y): 
    z = [] 
    for x1 in x: 
     for y1 in y.T: 
      z.append(max(np.minimum(x1, y1))) 
    return np.array(z).reshape((x.shape[0], y.shape[1])) 

# Max-Product Composition given by Rosenfeld 
def maxProduct(x, y): 
    z = [] 
    for x1 in x: 
     for y1 in y.T: 
      z.append(max(np.multiply(x1, y1))) 
    return np.array(z).reshape((x.shape[0], y.shape[1])) 

# 3 arrays for the example 
r1 = np.array([[1, 0, .7], [.3, .2, 0], [0, .5, 1]]) 
r2 = np.array([[.6, .6, 0], [0, .6, .1], [0, .1, 0]]) 
r3 = np.array([[1, 0, .7], [0, 1, 0], [.7, 0, 1]]) 

print "R1oR2 => Max-Min :\n" + str(maxMin(r1, r2)) + "\n" 
print "R1oR2 => Max-Product :\n" + str(maxProduct(r1, r2)) + "\n\n" 

print "R1oR3 => Max-Min :\n" + str(maxMin(r1, r3)) + "\n" 
print "R1oR3 => Max-Product :\n" + str(maxProduct(r1, r3)) + "\n\n" 

print "R1oR2oR3 => Max-Min :\n" + str(maxMin(r1, maxMin(r2, r3))) + "\n" 
print "R1oR2oR3 => Max-Product :\n" + str(maxProduct(r1, maxProduct(r2, r3))) + "\n\n" 

,這裏是它給出了答案:

R1oR2 => Max-Min : 
[[ 0.6 0.6 0. ] 
[ 0.3 0.3 0.1] 
[ 0. 0.5 0.1]] 

R1oR2 => Max-Product : 
[[ 0.6 0.6 0. ] 
[ 0.18 0.18 0.02] 
[ 0. 0.3 0.05]] 


R1oR3 => Max-Min : 
[[ 1. 0. 0.7] 
[ 0.3 0.2 0.3] 
[ 0.7 0.5 1. ]] 

R1oR3 => Max-Product : 
[[ 1. 0. 0.7 ] 
[ 0.3 0.2 0.21] 
[ 0.7 0.5 1. ]] 


R1oR2oR3 => Max-Min : 
[[ 0.6 0.6 0.6] 
[ 0.3 0.3 0.3] 
[ 0.1 0.5 0.1]] 

R1oR2oR3 => Max-Product : 
[[ 0.6 0.6 0.42 ] 
[ 0.18 0.18 0.126] 
[ 0.035 0.3 0.05 ]]