• 大小: 97KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-29
  • 语言: Matlab
  • 标签: T-S  模糊辨识  GPC  

资源简介

用T-S模糊辨识方法识别一个二阶对象,然后用GPC控制它。对于想深入学习模糊控制以及预测控制的朋友可以参看以下,含好几页的PDF说明文档哦。 觉得有用的朋友,请顶一个!

资源截图

代码片段和文件信息

clear all
close all
clear all
%获得样本数据
y(1)=1;y(2)=1;u(1)=0;r=16;N0=500;yr1=1;
for k=3:N0;
    u(k-1)=5*sin(pi*(k-1)/100);
    y(k)=(y(k-1)*y(k-2)*(y(k-1)-2.5)/(1+y(k-1)^2+y(k-2)^2))+u(k-1);
end
U1=zeros(4N0);
for k=1:N0;
    if y(k)<=-5
        U1(4k)=-0.1*y(k)-0.5;
   %%%%%%%
        U1(3k)=0.2*y(k)+2;
    elseif y(k)<=0
        U1(3k)=-0.2*y(k);
        U1(2k)=0.2*y(k)+1;
    elseif y(k)<=5
        U1(2k)=-0.2*y(k)+1;
        U1(1k)=0.1*y(k);
    else
        U1(1k)=0.1*y(k);
    end   
end       
for i=1:4;
    den=0.0001;
    for k=1:N0
        den=U1(ik)+den;
    end
   C(i)=(U1(i:)*y‘)/den;                 
end
 for k=1:N0;
    for i=1:4;
        D(ik)=abs(y(k)-C(i));       
    end
    if (D(:k)>0)
        for i=1:4;
            den=0.00001;
            for j=1:4;
                den=D(ik)/D(jk)+den; 
            end
            U2(ik)=1/den; 
        end
    else
        flag=(D(:k)>0);
        for i=1:4
            if (flag(i)==1)
                U2(ik)=0;
            else
                U2(ik)=1/sum(flag);
            end
        end
    end         
 end
for i=1:4
    den=0.00001;
    for k=1:N0
        den=U2(ik)+den;
    end
C(i)=(U2(i:)*y‘)/den;    
end
for k=1:N0
    den=0.00001;
   for i=1:4
       den=U2(ik)+den;
   end
   for i=1:4
       Beta(ik)=U2(ik)/den;
   end
end
for k=3:N0
    fai(:k-2)=[Beta(:k-2)
            Beta(:k-2)*y(k-1)
            Beta(:k-2)*y(k-2)
            Beta(:k-2)*u(k-1)];  
end
ft=fai‘;
w=zeros(N0-216);
w(:1)=ft(:1);
for k=1:N0-2
    for h=2:16
        for i=1:h-1
            den(1i)=0.001;
            for k=1:N0-2
                den(1i)=den(1i)+w(ki);
            end
            alpha(hi)=0;
            for k=1:N0-2
                alpha(hi)=alpha(hi)+w(ki)*ft(kh)/den(1i);
            end
        end
        s(1h)=0;
        for i=1:h-1
            s(1h)=s(1h)+alpha(hi)*w(ki);
        end
        w(kh)=ft(kh)-s(1h);
    end
end 
W=w‘;
at=alpha‘; 
for i=1:r;
    den=0.0001;
    for k=1:N0-2
            den=W(ik)+den;
    end
    g(i)=(W(i:)*y(1:N0-2)‘)/den;
end
theta(r)=g(r);
for i=(r-1):(-1):1;
    theta(i)=g(i)-at(i:)*theta‘;
end
x=[-15:0.1:15];
for k=1:301
if x(k)<=-10
    UNB(k)=-0.1*x(k)-0.5;
    UNS(k)=0;
    UPS(k)=0;
    UPB(k)=0;
elseif x(k)<=-5
    UNB(k)=-0.1*x(k)-0.5;
   UNS(k)=0.2*x(k)+2;
    UPS(k)=0;
    UPB(k)=0;
elseif x(k)<=0
    UNB(k)=0;
   UNS(k)=-0.2*x(k);
   UPS(k)=0.2*x(k)+1;
   UPB(k)=0;
elseif x(k)<=5
    UNB(k)=0;
    UNS(k)=0;
    UPS(k)=-0.2*x(k)+1;
    UPB(k)=0.1*x(k);
else
    UNB(k)=0;
    UNS(k)=0;
    UPS(k)=0;
    UPB(k)=0.1*x(k);
    if UPB(k)>=1
        UPB(k)=1;
    end
end
end
hold on;
plot(xUNB‘b‘);
plot(xUNS‘k‘);
plot(xUPS‘r‘);
plot(xUPB‘g‘);
subplot(211):plot(xUNB‘b‘xUNS‘k‘xUPS‘r‘xUPB‘g‘);
 xlabel(‘隶属函数图‘);;ylabel(‘隶属度‘)
hold on
%GPC控制
N=8

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5768  2009-07-01 15:00  模糊控制二\fuzzywork2.m

     文件     115136  2009-11-11 15:35  模糊控制二\模糊控制.pdf

     目录          0  2009-07-01 17:33  模糊控制二

----------- ---------  ---------- -----  ----

               120904                    3


评论

共有 条评论