C#与Matlab混合编程中,我在M文件中使用模糊工具生产的fis文件,发生错误。我用 a = readfis('1')
a =
name: '1'
type: 'mamdani'
andMethod: 'min'
orMethod: 'max'
defuzzMethod: 'centroid'
impMethod: 'min'
aggMethod: 'max'
input: [1x2 struct]
output: [1x1 struct]
rule: [1x9 struct]
>> showfis(a)
1. Name 1
2. Type mamdani
3. Inputs/Outputs [2 1]
4. NumInputMFs [3 3]
5. NumOutputMFs 3
6. NumRules 9
7. AndMethod min
8. OrMethod max
9. ImpMethod min
10. AggMethod max
11. DefuzzMethod centroid
12. InLabels A
13. B
14. OutLabels C
15. InRange [-20 -5]
16. [0 5]
17. OutRange [0 30]
18. InMFLabels 高
19. 中
20. 低
21. 小
22. 中
23. 大
24. OutMFLabels 低
25. 中
26. 高
27. InMFTypes trapmf
28. trimf
29. trapmf
30. trapmf
31. trimf
32. trapmf
33. OutMFTypes trapmf
34. trimf
35. trapmf
36. InMFParams [-26.4 -20.4 -15.97 -12.9]
37. [-20 -12.5 -5 0]
38. [-11 -9.028 -4.41 1.59]
39. [-2.25 -0.25 1.263 2.25]
40. [0 2.5 5 0]
41. [2.52 3.644 5.03 7.03]
42. OutMFParams [-13.5 -1.5 6.865 13.5]
43. [0 15 30 0]
44. [15.8 22 29.96 42.8]
45. Rule Antecedent [1 3]
46. [2 3]
47. [3 3]
48. [1 2]
49. [2 2]
50. [3 2]
51. [1 1]
52. [2 1]
53. [3 1]
45. Rule Consequent 3
46. 3
47. 2
48. 3
49. 2
50. 1
51. 2
52. 1
53. 1
45. Rule Weight 1
46. 1
47. 1
48. 1
49. 1
50. 1
51. 1
52. 1
53. 1
45. Rule Connection 1
46. 1
47. 1
48. 1
49. 1
50. 1
51. 1
52. 1
53. 1
根据这些属性在M中用
a=newfis('NO1');
a=addvar(a,'input','A',[-20,5]);
a=addmf(a,'input',1,'高','trapmf',[-26.4 -20.4 -15.97 -12.9]);
a=addmf(a,'input',1,'中','trimf',[-20 -12.5 -5 0]);
a=addmf(a,'input',1,'低','trapmf',[-11 -9.028 -4.41 1.59]);
a=addvar(a,'input','B',[0,5]);
a=addmf(a,'input',1,'小','trapmf',[-2.25 -0.25 1.263 2.25]);
a=addmf(a,'input',1,'中','trimf',[0 2.5 5 0]);
a=addmf(a,'input',1,'大','trapmf',[2.52 3.644 5.03 7.03]);
a=addvar(a,'output','C',[0,30]);
a=addmf(a,'output',1,'低','trapmf',[-13.5 -1.5 6.865 13.5]);
a=addmf(a,'output',1,'中','trimf',[0 15 30 0]);
a=addmf(a,'output',1,'高','trapmf',[15.8 22 29.96 42.8]);
rulelist=[1 3 3 1 1
2 3 3 1 1
3 3 2 1 1
1 2 3 1 1
2 2 2 1 1
3 2 1 1 1
1 1 2 1 1
2 1 1 1 1
3 1 1 1 1];
a=addrule(a,rulelist);
a=setfis(a,'DefuzzMethod','centroid');
writefis(a,'NO1');
表示
然而用
a=readfis('NO1');
发生如下错误
a = readfis('NO1')
??? Error using ==> parsrule at 174
Input MF index is too high
Error in ==> readfis at 231
out=parsrule(out,txtRuleList,'indexed');
求如何解决