⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dlb simulate.m

📁 我自己写的一级倒立摆的MATLAB仿真程序
💻 M
字号:
clear
tc=newfis('tc','sugeno');
tc=addvar(tc,'input','theta',[-pi,pi]);
tc=addmf(tc,'input',1,'NG','gaussmf',[1.2 -3]);
tc=addmf(tc,'input',1,'ZR','gaussmf',[1.2 0]);
tc=addmf(tc,'input',1,'PO','gaussmf',[1.2 3]);
tc=addvar(tc,'input','opega',[-5,5]);
tc=addmf(tc,'input',2,'NG','gaussmf',[1.8 -5]);
tc=addmf(tc,'input',2,'ZR','gaussmf',[1.8 0]);
tc=addmf(tc,'input',2,'PO','gaussmf',[1.8 5]);
tc=addvar(tc,'output','r',[-2,2]);
tc=addmf(tc,'output',1,'NO.1','linear',[-357.4135 -45.3333 0]);
tc=addmf(tc,'output',1,'NO.2','linear',[-341.4135 -45.3333 0]);
tc=addmf(tc,'output',1,'NO.3','linear',[-662.5861 -102.6667 0]);
tc=addmf(tc,'output',1,'NO.4','linear',[-680.4563 -109.5949 0]);
tc=addmf(tc,'output',1,'NO.5','linear',[-680.4563 -95.7385 0]);
rulist=[1 1 4 1 1;
        1 2 3 1 1;
        1 3 5 1 1; 
        2 1 2 1 1;
        2 2 1 1 1;
        2 3 2 1 1;
        3 1 5 1 1;
        3 2 3 1 1;
        3 3 4 1 1];
 tc=addrule(tc,rulist);

model=newfis('model','sugeno');
model=addvar(model,'input','theta',[-pi pi]);
model=addmf(model,'input',1,'NG','gaussmf',[1.2 -3]);
model=addmf(model,'input',1,'ZR','gaussmf',[1.2 0]);
model=addmf(model,'input',1,'PO','gaussmf',[1.2 3]);
model=addvar(model,'input','opega',[-5,5]);
model=addmf(model,'input',2,'NG','gaussmf',[1.8 -5]);
model=addmf(model,'input',2,'ZR','gaussmf',[1.8 0]);
model=addmf(model,'input',2,'PO','gaussmf',[1.8 5]);
model=addvar(model,'input','u',[-5,5]);
model=addmf(model,'input',3,'Any','gaussmf',[1.5 -5]);
model=addvar(model,'output','d_theta',[-2,2]);
model=addmf(model,'output',1,'NO.1','linear',[0 1 0 0]);
model=addmf(model,'output',1,'NO.2','linear',[0 1 0 0]);
model=addmf(model,'output',1,'NO.3','linear',[0 1 0 0]);
model=addmf(model,'output',1,'NO.4','linear',[0 1 0 0]);
model=addmf(model,'output',1,'NO.5','linear',[0 1 0 0]);
model=addvar(model,'output','d_omega',[-2,2]);
model=addmf(model,'output',2,'NO.1','linear',[17.2941 0 -0.1765 0]);    
model=addmf(model,'output',2,'NO.1','linear',[14.47061 0 -0.1765 0]);    
model=addmf(model,'output',2,'NO.1','linear',[5.8512 0 -0.0799 0]);    
model=addmf(model,'output',2,'NO.1','linear',[7.2437 0.5399  -0.0799 0]); 
model=addmf(model,'output',2,'NO.1','linear',[7.2437 -0.5399 -0.0799 0]);
rulist1=[1 1 0 4 4 1 1;
        1 2 0 3 3 1 1;
        1 3 0 5 5 1 1;
        2 1 0 2 2 1 1;
        2 2 0 1 1 1 1;
        2 3 0 2 2 1 1;
        3 1 0 5 5 1 1;
        3 2 0 3 3 1 1;
       3 3 0 4 4 1 1];
model=addrule(model,rulist1);
 
 N=500;h=0.005;
 x=[1.309;0];
 y=zeros(2,N);
 u=zeros(1,N);
 for k=2:N
     u(k)=(-1)*evalfis([x(1),x(2)],tc);
     k0=evalfis([x(1),x(2),u(k)],model)';
     x1=x+h*k0/2;
     k1=evalfis([x1(1),x1(2),u(k)],model)';
     x1=x+h*k1/2;
     k2=evalfis([x1(1),x1(2),u(k)],model)';
     x1=x+h*k2;
     k3=evalfis([x1(1),x1(2),u(k)],model)';
     x=x+(k0+2*k1+2*k2+k3)*h/6;
     y(:,k)=x;
 end
 kk=[1:N]*h;
 figure(1)
 subplot 211
 plotmf(tc,'input',1),grid on
subplot 212
plotmf(tc,'input',2),grid on
 figure(2)
 subplot 211
 plot(kk,y),grid on
 xlabel('x'),ylabel('系统状态');
 subplot 212
 plot(kk,u),grid on
  xlabel('u(k)'),ylabel('模糊控制器输出');
  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -