liuxiaoli487 发表于 2006-11-7 18:58

请教:模糊控制的MATLAB编程问题

在运行MATLAB编写的模糊控制程序时总是出现以下问题:
Error in ==> evalfis at 81
= evalfismex(input, fis, numofpoints);

Error in ==> MH at 81
U=ku*evalfis(in,FC);
请教各位高手如何解决?

多情清秋 发表于 2006-11-7 19:10

这一类错误问题请提供详细的错误信息或者给出相应的代码,否则别人基本没办法帮你

liuxiaoli487 发表于 2006-11-7 19:25

这是代码
% 被控系统建模
num=10;
den=;
=tf2ss(num,den);
x=;
%系统参数
T=0.1;td=0.5;
N=250;
R=1*ones(1,N);
%建立新的FIS结构为FC.fis
FC=newfis('FC');
%添加输入输出变量
FC=addvar(FC,'input','E',[-6 6]);
FC=addvar(FC,'input','EC',[-6 6]);
FC=addvar(FC,'output','U',[-7 7]);
%添加隶属度函数
FC=addmf(FC,'input',1,'NB','trimf',[-6 -6 -2]);
FC=addmf(FC,'input',1,'NM','trimf',[-6 -4 -1]);
FC=addmf(FC,'input',1,'NS','trimf',[-5 -2 0]);
FC=addmf(FC,'input',1,'N0','trimf',[-3 -0 +0]);
FC=addmf(FC,'input',1,'P0','trimf',);
FC=addmf(FC,'input',1,'PS','trimf',);
FC=addmf(FC,'input',1,'PM','trimf',);
FC=addmf(FC,'input',1,'PB','trimf',);

FC=addmf(FC,'input',1,'NB','trimf',[-6 -6 -2]);
FC=addmf(FC,'input',1,'NM','trimf',[-7 -4 -1]);
FC=addmf(FC,'input',1,'NS','trimf',[-5 -2 0]);
FC=addmf(FC,'input',1,'0','trimf',[-2 0 2]);
FC=addmf(FC,'input',1,'PS','trimf',);
FC=addmf(FC,'input',1,'PM','trimf',);
FC=addmf(FC,'input',1,'PB','trimf',);

FC=addmf(FC,'output',1,'NB','trimf',[-7 -7 -3]);
FC=addmf(FC,'output',1,'NM','trimf',[-7 -4 -1]);
FC=addmf(FC,'output',1,'NS','trimf',[-5 -1 1]);
FC=addmf(FC,'output',1,'0','trimf',[-2 0 2]);
FC=addmf(FC,'output',1,'PS','trimf',[-1 1 5]);
FC=addmf(FC,'output',1,'PM','trimf',);
FC=addmf(FC,'output',1,'PB','trimf',);

%添加控制规则
rr=[7 7 7 7 6 4 4;
    7 7 7 7 6 4 4;
    6 6 6 6 4 3 3;
    6 6 5 4 3 2 2;
    6 6 5 4 3 2 2;
    5 5 4 2 2 2 2;
    4 4 2 1 1 1 1;
    4 4 2 1 1 1 1;];
r1=zeros(prod(size(rr)),3);k=1;
for i=1:size(rr,1)
    for j=1:size(rr,2)
      r1(k,:)=;
      k=k+1;
    end
end
=size(r1);r2=ones(r,2);
rulelist=;
FC=addrule(FC,rulelist);
%采用模糊控制器的二阶系统仿真
E=0;EC=0;IE=0;
x=;
ke=60;kd=2.5;ki=0.01;ku=0.8;
for k=1:N
    %输入变量变换至论域
    E1=ke*E;
   EC1=kd*EC;
   if E1>=6
       E1=6;
   elseif E1<=-6
       E1=-6;
   end
   if EC1>=6
       EC1=6;
   elseif EC1<=-6
       EC1=-6;
   end
%模糊推理,计算出被控对象的控制输入
in=;
U=ku*evalfis(in,FC);
uu(1,k)=U;
%控制作用于被控系统,计算系统输出
k0=a1*x+b*u;
k1=a1*(x+h*k0/2)+b*u;
k2=a1*(x+h*k1/2)+b*u;
k3=a1*(x+h*k2)+b*u;
x=x+(k0+2*k1+2*k2+k3)*h/6;
y=c*x+d*u;
%计算系统输出误差及误差导数
E1=E;
E=y-R(1,k);
EC=(E-E1)/T;
IE=IE+E*T;
yy(1,k)=y;
end
%典型二阶环节的模糊控制输出曲线
kk=*T;
figure(1);
plot(kk,R,'k',kk,yy,'r',kk,yy1,'b');

cdwxg 发表于 2007-3-30 16:46

原帖由 liuxiaoli487 于 2006-11-7 19:25 发表
这是代码
% 被控系统建模
num=10;
den=;
=tf2ss(num,den);
x=;
%系统参数
T=0.1;td=0.5;
N=250;
R=1*ones(1,N);
%建立新的FIS结构为FC.fis
FC=newfis('FC');
%添加输入输出变量
FC=addvar(FC,'in ...
请问有没有模型类的东西?直观的东西,这个代码实现了什么?
页: [1]
查看完整版本: 请教:模糊控制的MATLAB编程问题