模糊逻辑工具箱Matlab

时间:2018-03-05 14:15:47

标签: matlab fuzzy-logic

使用模糊逻辑工具箱编写Matlab代码时出现以下错误,我无法解决此问题

  

使用evalfismex时出错   fisTriangleMf()中的非法参数 - > a> b
  evalfis出错(第83行)
  [输出,IRR,ORR,ARR] = evalfismex(输入,fis,numofpoints);
  Untitl出错(第45行)
  evalfis([1 0.5],fis)

以下是Matlab代码: 在代码值中,0表示cos在90度和180度的值。基本上,我必须在不同角度绘制EP和不同cos值之间的图形。但我无法通过上述错误。

fis = newfis('force');
fis.input(1).name = 'x1';
fis.input(1).range = [0 1];
fis.input(1).mf(1).name = 'NS';
fis.input(1).mf(1).type = 'trimf';
fis.input(1).mf(1).params = [1 0 1];
fis.input(1).mf(2).name = 'NB';
fis.input(1).mf(2).type = 'trimf';
fis.input(1).mf(2).params = [0 1 0];
fis.input(1).mf(3).name = 'Z';
fis.input(1).mf(3).type = 'trimf';
fis.input(1).mf(3).params = [0 1 0];

% input 2
fis.input(2).name = 'x2';
fis.input(2).range = [0 1];
fis.input(2).mf(1).name = 'PS';
fis.input(2).mf(1).type = 'trimf';
fis.input(2).mf(1).params = [0 1 0];
fis.input(2).mf(2).name = 'PB';
fis.input(2).mf(2).type = 'trimf';
fis.input(2).mf(2).params = [1 0 1];

% output
fis.output(1).name = 'EP';
fis.output(1).range = [0 1];
fis.output(1).mf(1).name = 'NME';
fis.output(1).mf(1).type = 'trimf';
fis.output(1).mf(1).params = [1 0];
fis.output(1).mf(2).name = 'NE';
fis.output(1).mf(2).type = 'trimf';
fis.output(1).mf(2).params = [0 1 ];
fis.output(1).mf(3).name = 'ME';
fis.output(1).mf(3).type = 'trimf';
fis.output(1).mf(3).params = [0 1];

% Rules
fis.rule(1).antecedent = [1 1];
fis.rule(1).consequent = 1;
fis.rule(1).weight = 1;
fis.rule(1).connection = 2;
fis.rule(2).antecedent = [2 0];
fis.rule(2).consequent = 2;
fis.rule(2).weight = 1;
fis.rule(2).connection = 1;
fis.rule(3).antecedent = [3 2];
fis.rule(3).consequent = 3;
fis.rule(3).weight = 1;
fis.rule(3).connection = 2;

evalfis([1 0.5],fis)

真的很感激任何帮助。

1 个答案:

答案 0 :(得分:0)

问题是您为三角形隶属函数提供了无效参数。它必须采用三个参数,例如abc,例如a < b < c,其中,引用MATLAB online documentation

  

参数a和c定位三角形的“英尺”,参数b定位峰值。

我建议您使用MATLAB模糊GUI来构建您的系统。你的规则可能有问题。