def mg(x, xmf, umf=[0, 1, 1, 0]):
"""Function to compute the membership grades of each x on a T1 FS
x: list of x values
xmf: x parameters of the membership function
umf: u parameters of the membership function
"""
items = [item for item in sorted(zip(xmf, umf))]
xmf = [i[0] for i in items]
umf = [i[1] for i in items]
u = [None] * len(x) # membership grade of x
for i, p in enumerate(x):
if p <= xmf[0] or p >= xmf[-1]:
u[i] = 0
else:
x_mf = np.array(xmf)
left = np.nonzero(x_mf < p)[0][-1]
right = left + 1
u[i] = umf[left] + (umf[right] - umf[left]) * (p - xmf[left]) / (xmf[right] - xmf[left])
return u
评论列表
文章目录