用matlab做模糊控制表,MATLAB制做模糊控制响应表源程序

该程序创建了一个模糊逻辑系统,包含输入变量e和ec,输出变量u,使用trimf函数定义了不同语言变量的隶属函数。通过规则列表建立了模糊规则,并设置了解模糊方法为'centroid'。程序旨在评估和生成模糊推理结果,但存在错误导致无法正常运行。
摘要由CSDN通过智能技术生成

a=newfis('fuzzf');

a=addvar(a,'input','e',[-6,6]); %加入输入变量e的参数

a=addmf(a,'input',1,'NB','trimf',[-6 -6 -3]); %建立语言变量赋值表

a=addmf(a,'input',1,'NM','trimf',[-6 -4 -1]);

a=addmf(a,'input',1,'NS','trimf',[-4 -2 -0]);

a=addmf(a,'input',1,'NZ','trimf',[-2 -0 -0]);

a=addmf(a,'input',1,'PZ','trimf',[0 0 2]);

a=addmf(a,'input',1,'PS','trimf',[0 2 4]);

a=addmf(a,'input',1,'PM','trimf',[1 4 6]);

a=addmf(a,'input',1,'PB','trimf',[3 6 6]);

a=addvar(a,'input','ec',[-6,6]); %加入输入变量ec的参数

a=addmf(a,'input',1,'NB','trimf',[-6 -6 -3]); %建立语言变量赋值表

a=addmf(a,'input',1,'NM','trimf',[-6 -4 -1]);

a=addmf(a,'input',1,'NS','trimf',[-4 -2 -0]);

a=addmf(a,'input',1,'NZ','trimf',[-2 -0 -0]);

a=addmf(a,'input',1,'PZ','trimf',[0 0 2]);

a=addmf(a,'input',1,'PS','trimf',[0 2 4]);

a=addmf(a,'input',1,'PM','trimf',[1 4 6]);

a=addmf(a,'input',1,'PB','trimf',[3 6 6]);

a=addvar(a,'output','u',[-3,3]); %加入输出变量u的参数

a=addmf(a,'input',1,'NB','trimf',[-3 -3 -1]); %建立语言变量赋值表

a=addmf(a,'input',1,'NM','trimf',[-3 -1 -1]);

a=addmf(a,'input',1,'NS','trimf',[-2 -0 -0]);

a=addmf(a,'input',1,'PS','trimf',[0 0 2]);

a=addmf(a,'input',1,'PM','trimf',[1 1 3]);

a=addmf(a,'input',1,'PB','trimf',[1 3 3]);

rulelist=[1 1 1 1 1;

1 2 1 1 1;

1 3 1 1 1;

1 4 1 1 1;

1 5 1 1 1;

1 6 2 1 1;

1 7 3 1 1;

1 8 3 1 1;

2 1 1 1 1;

2 2 1 1 1;

2 3 1 1 1;

2 4 1 1 1;

2 5 1 1 1;

2 6 2 1 1;

2 7 3 1 1;

2 8 3 1 1;

3 1 2 1 1;

3 2 2 1 1;

3 3 2 1 1;

3 4 2 1 1;

3 5 3 1 1;

3 6 4 1 1;

3 7 4 1 1;

3 8 4 1 1;

4 1 2 1 1;

4 2 2 1 1;

4 3 3 1 1;

4 4 4 1 1;

4 5 4 1 1;

4 6 4 1 1;

4 7 5 1 1;

4 8 5 1 1;

5 1 2 1 1;

5 2 2 1 1;

5 3 3 1 1;

5 4 3 1 1;

5 5 3 1 1;

5 6 4 1 1;

5 7 5 1 1;

5 8 5 1 1;

6 1 3 1 1;

6 2 3 1 1;

6 3 4 1 1;

6 4 4 1 1;

6 5 5 1 1;

6 6 5 1 1;

6 7 5 1 1;

6 8 5 1 1;

7 1 4 1 1;

7 2 4 1 1;

7 3 5 1 1;

7 4 5 1 1;

7 5 6 1 1;

7 6 6 1 1;

7 7 6 1 1;

7 8 6 1 1;

8 1 4 1 1;

8 2 4 1 1;

8 3 5 1 1;

8 4 5 1 1;

8 5 6 1 1;

8 6 6 1 1;

8 7 6 1 1;

8 8 6 1 1;]

a=addrule(a,rulelist);

a=setfis(a,'DefuzzMethod','centroid'); %设置解模糊方法

writefis(a,'ljk');

a=readfis('ljk');

plotfis(a);

Ulist=zeros(14,14);

for i=1:1:14

for j=1:1:14

e=-7+j;

if e<0

e=e;

else

e=e-1;

end

ec=-7+i;

if ec<0

ec=ec;

else

ec=ec-1;

end

Ulist(i,j)=evalfis([e ec],a);

end

end

Ulist=ceil(Ulist)

程序运行总是出错,请高手指点,我确实是找不出错误了:L :'(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值