模糊逻辑工具箱 Matlab

Fuzzy Logic Toolbox Matlab

我在使用模糊逻辑工具箱编写 Matlab 代码时遇到以下错误,无法解决

Error using evalfismex
Illegal parameters in fisTriangleMf() --> a > b
Error in evalfis (line 83)
[output,IRR,ORR,ARR] = evalfismex(input, fis, numofpoints);
Error in Untitl (line 45)
evalfis([1 0.5],fis)

下面是Matlab代码: 在代码中,值 0 1 表示 90 度和 180 度的 cos 值。基本上,我必须绘制 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)

任何帮助将不胜感激。

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

The parameters a and c locate the “feet” of the triangle and the parameter b locates the peak.

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