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

Octave模糊逻辑工具箱readfis索引越界报错,求代码定位路径

Octave模糊逻辑工具箱readfis索引越界问题排查

报错详情

执行读取FIS文件命令时出现索引越界错误:

fis = readfis ( 'dc_motor.fis')
error: line_vec(5): out of bound 4 (dimensions are 1x4)
error: called from
readfis>get_next_rule at line 519 column 23
readfis>read_rules at line 346 column 27
readfis at line 92 column 7

本地代码位置查找

要定位报错相关代码的本地路径,可按以下步骤操作:

  1. 打开Octave命令行,输入命令:
    which readfis
    
    该命令会返回readfis.m文件的绝对路径(路径根据Octave安装位置不同会有差异,例如/usr/share/octave/packages/fuzzy-logic-toolkit/readfis.m)
  2. 使用文本编辑器打开该readfis.m文件,即可找到报错中提到的:
    • get_next_rule子函数位于第519行
    • read_rules子函数位于第346行

附自制FIS文件内容

[System]
Name='Dc-Motor'
Type='mamdani'
Version=1.0
NumInputs=2
NumOutputs=1
NumRules=25
AndMethod='min'
OrMethod='max'
ImpMethod='min'
AggMethod='max'
DefuzzMethod='centroid'

[Input1]
Name= 'Error'
Range= [-97.5 +97.5 ]
NumMFs = 5
MF1='Nl':'trapmf',[=-67-66 -65 -32.5 ]
MF2='Ns':'trimf',[-65 -32.5 0 ]
MF3 ='Z':'trimf',[-32.5  0  32.5]
MF4 ='Ps':'trimf',[0  32.5  65]
MF5 ='Pl':'trapmf',[32.5 65 66 67]

[Input2]
Name ='Edot'
Range=[-54 54]
NumMFs=5
MF1='Nl':'trapmf',[-38-37 -36 -18]
MF2='Ns':'trimf',[-36 18  0]
MF3 ='Z':'trimf',[-18  0  18]
MF4 ='Ps':'trimf',[0  18  36]
MF5 ='Pl':'trapmf',[18 36  37 38]


[Output1]
Name ='U'
Range=[-155 155]
NumMFs=5
MF1='Nl':'trimf',[-155 -103.3  -51.66]
MF2='Ns':'trimf',[-103.3 -51.66  0]
MF3 ='Z':'trimf',[ -51.66  0   51.6 ]
MF4 ='Ps':'trimf',[ 0  51.66  103.3]
MF5 ='Pl':'trimf',[ 51.6  103.3  155]


[Rules]
1 1, 1 (1): 1
1 2, 1 (1): 1
1 3, 1 (1): 1
1 4, 1 (1): 1
1 5, 5 (1): 1
2 1, 1 (1): 1
2 2, 2 (1): 1
2 3, 2 (1): 1
2 4, 3 (1): 1
2 5, 2 (1): 1
3 1, 5 (1): 1
3 2, 4 (1): 1
3 3, 3 (1): 1
3 4, 2 (1): 1
3 5, 1 (1): 1
4 1, 1 (1): 1
4 2, 3 (1): 1
4 3, 4 (1): 1
4 4, 4 (1): 1
4 5, 5 (1): 1
5 1, 3 (1): 1
5 2, 4 (1): 1
5 3, 5 (1): 1
5 4, 4 (1): 1
5 5, 5 (1): 1

额外排查提示

从FIS文件内容看,存在几处格式错误可能导致解析失败:

  • Input1的MF1参数中多了多余的=符号,且-67与-66之间缺少空格,应修正为[-67 -66 -65 -32.5]
  • Input2的MF1参数中-38与-37之间缺少空格,应修正为[-38 -37 -36 -18]
  • Input2的MF2参数顺序错误(trimf要求参数从小到大),应修正为[-36 0 18]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 13:04:50