调用evalfis评估FIS时触发trapmf参数向量错误的技术问询
错误解析与修复方案
错误提示里的「第二个参数」指的是**trapmf函数自身的第二个参数**,和你调用evalfis时传入的fis无关。问题出在你的FIS文件定义里,多个隶属度函数的语法/参数不符合要求,导致trapmf无法识别合法的参数向量:
具体问题点
- Input1的MF1:
[-67-66 -65 -32.5 ]里的-67-66是连续减号,会被解析成单个数值(-133),但trapmf要求必须传入4个独立参数的向量,这里实际只有3个有效参数,触发错误。要改成[-67 -66 -65 -32.5 ](每个数值间加空格)。 - Input2的MF1:和上面同理,
[-38-37 -36 -18]要改成[-38 -37 -36 -18]。 - Input2的MF5:
'Pl':'trapmf, [18 36 37 38]里trapmf后面少了一个单引号,语法错误导致参数无法被正确识别,修正为'Pl':'trapmf', [18 36 37 38]。 - Output1的MF5:
trimf(三角形隶属度函数)仅支持3个参数,但你给了7个[-255 -170 -85 0 85 170 255]。如果是要实现覆盖全范围的梯形,换成trapmf并传入4个参数,比如[-255 -170 170 255];如果确实要用三角形,就缩减为3个合理参数。
修正示例
以Input1的MF1为例,修正后代码:
MF1='Nl':'trapmf', [-67 -66 -65 -32.5 ]
Input2的MF5修正后:
MF5='Pl':'trapmf', [18 36 37 38]
内容的提问来源于stack exchange,提问作者Saturn777
相关产品推荐
相关产品推荐

