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

📄 haoqiang.m

📁 模糊数学中典型的卡车倒车入库模拟仿真程序
💻 M
字号:
% fuzzy control
a=newfis('fuzzy','mamdani')
a=addvar(a,'input','x',[0 100]);
a=addvar(a,'input','phi',[0 180]);
a=addvar(a,'output','sita',[-30 30]);
a=addmf(a,'input',1,'nb','trampf',[0 0 25.26 30.75]);
a=addmf(a,'input',1,'ps','trampf',[50.72 59.8 63.76 69.8]);
a=addmf(a,'input',1,'pb','trampf',[65 73.94 100 100]);
a=addmf(a,'input',1,'ns','trampf',[30.3 35.1 43.3 49.6]);
a=addmf(a,'input',1,'zo','trampf',[44.6 50.4 52 56.22]);
a=addmf(a,'input',2,'nb','trampf',[0 0 31.19 38.8]);
a=addmf(a,'input',2,'nm','trampf',[34.5 45.5 58.3 66.43]);
a=addmf(a,'input',2,'ns','trampf',[61.7 64.05 79.3 87.9]);
a=addmf(a,'input',2,'zo','trampf',[81.7 88 91.7 99.3]);
a=addmf(a,'input',2,'ps','trampf',[94 97 115 121]);
a=addmf(a,'input',2,'pm','trampf',[118 127 142 149]);
a=addmf(a,'input',2,'pb','trampf',[148 160 180 180]);
a=addmf(a,'output',1,'nb','trampf',[-30 -30 -23.3 -21.7]);
a=addmf(a,'output',1,'nm','trampf',[-22.62 -20.7 -13.9 -10.7]);
a=addmf(a,'output',1,'ns','trampf',[-12.47 -10.54 -5.317 -3.091]);
a=addmf(a,'output',1,'zo','trampf',[-4.37 0.0794 0.354 3.65]);
a=addmf(a,'output',1,'ps','trampf',[2.64 5.75 10.08 11.73]);
a=addmf(a,'output',1,'pm','trampf',[10.6 12.9 22.47 24.37]);
a=addmf(a,'output',1,'pb','trampf',[22.3 24.5 30 30]);
rulelist=[1 1 1 1 1;
     1 2 1 1 1;
     1 3 1 1 1;
     1 4 2 1 1;
     1 5 2 1 1;
     1 6 7 1 1;
     1 7 7 1 1;
     2 1 2 1 1;
     2 2 2 1 1;
     2 3 4 1 1;
     2 4 5 1 1;
     2 5 6 1 1;
     2 6 7 1 1;
     2 7 7 1 1;
     3 1 1 1 1;
     3 2 1 1 1;
     3 3 6 1 1;
     3 4 7 1 1;
     3 5 7 1 1;
     3 6 7 1 1;
     3 7 7 1 1;
     4 1 2 1 1;
     4 2 3 1 1;
     4 3 2 1 1;
     4 4 3 1 1;
     4 5 4 1 1;
     4 6 6 1 1;
     4 7 6 1 1;
     5 1 1 1 1;
     5 2 1 1 1;
     5 3 2 1 1;
     5 4 4 1 1;
     5 5 5 1 1;
     5 6 6 1 1;
     5 7 7 1 1;]
 a=addrule(a,rulelist);
 a=setfis(a,'Defuzzmethod','centroid');
 %main 
clear;
l=1;
v=5;
ts=0.5;
fuzzyfis=readfis('fuzzy.fis');

x(1)=20;
y(1)=300;
phi(1)=160;
N=2000;
for i=1:1:N-1
    inputcanshu=[x(i),phi(i)];
    outputcanshu=evalfis(inputcanshu,fuzzyfis);
    sita(i)=outputcanshu;
    x(i+1)=x(i)-v*ts*cos(phi(i)*pi/180);
    y(i+1)=y(i)-v*ts*sin(phi(i)*pi/180);
    phi(i+1)=phi(i)-(v*ts/l)*tan(sita(i)*pi/180);
     if(y(i+1)<0)
        break;
    end
end
for i=1:1:length(x)
    plot(x(i),y(i),'*');
    grid;
    axis ([-100 200 0 300]);
   xlabel('x');ylabel('y');
    title('卡车倒车入库演示');
    F(i) = getframe;
end
 %plot(x,y,'*');
 %axis equal;
 %grid;
 %xlabel('x');ylabel('y');
 %title('卡车倒车入库演示');
movie2avi(F,'fuzzy.avi');

⌨️ 快捷键说明

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