模糊逻辑工具箱Matlab

问题描述 投票:0回答:1

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

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

下面是Matlab代码:代码值0 1表示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)

任何帮助将非常感激。

matlab fuzzy-logic
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.