You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于skfuzzy的trimf无负值及绘图偏移问题的技术咨询

模糊逻辑代码问题解答

疑问一:trimf()函数在x为负值时无对应值?

这是误解,trimf(X, [-50, 5, 30])生成的是三角隶属函数,参数定义了三个关键点:左端点-50、顶点5、右端点30。

  • 当X < -50时,隶属度为0;
  • -50 ≤ X ≤5时,隶属度从0线性上升到1;
  • 5 < X ≤30时,隶属度从1线性下降到0;
  • X>30时,隶属度回到0。
    你看到的“无对应值”其实是隶属度为0的部分,并非函数没生成值。

疑问二:图像整体右移100,高斯函数C位置不符合预期?

核心问题是plt.plot()的x轴参数缺失:
你调用plt.plot(A)时,Matplotlib默认用数组的索引(0到199)作为x轴坐标,但你的X实际是[-100,100)的数值。这就导致原本对应X=-100的点被画到x=0位置,整体图像自然右移了100,均值为0的高斯函数C也被移到了x=100的位置。

修正后的代码

import numpy as np
import skfuzzy as fuzz
import matplotlib.pyplot as plt

X = np.arange(-100, 100, 1)
A = fuzz.trimf(X, [-50, 5, 30])
B = fuzz.trapmf(X, [-110, -100,-50,100])
C = fuzz.gaussmf(X, 0, 30)
D = fuzz.gauss2mf(X, -10, 5, 10, 30)

# 关键:指定x轴为X的实际值
plt.plot(X, A)
plt.plot(X, B)
plt.plot(X, C)
plt.plot(X, D)
plt.show()

修正后,x轴会显示[-100,100)的实际范围,高斯函数C的峰值会正确落在x=0处,所有隶属函数的位置都符合预期。

内容的提问来源于stack exchange,提问作者duckkkk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 15:22:56