为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

MATLAB模糊控制仿真程序

2019-02-13 9页 doc 22KB 88阅读

用户头像

is_496339

暂无简介

举报
MATLAB模糊控制仿真程序clear all; close all; ts=20; sys1=tf([1],[60,1],'inputdelay',80); %生成或转换传递函数模型 dsys1=c2d(sys1,ts,'zoh'); %将连续系统离散化 [num1,den1]=tfdata(dsys1,'v'); %传统PID算法 u_1=0;u_2=0;u_3=0;u_4=0;u_5=0; y_1=0;y_2=0;y_3=0; error_1=0;ei=0; for k=1:1:300 time(k)=k*ts; ri...
MATLAB模糊控制仿真程序
clear all; close all; ts=20; sys1=tf([1],[60,1],'inputdelay',80); %生成或转换传递函数模型 dsys1=c2d(sys1,ts,'zoh'); %将连续系统离散化 [num1,den1]=tfdata(dsys1,'v'); %传统PID算法 u_1=0;u_2=0;u_3=0;u_4=0;u_5=0; y_1=0;y_2=0;y_3=0; error_1=0;ei=0; for k=1:1:300 time(k)=k*ts; rin(k)=40; yout(k)=-den1(2)*y_1+num1(2)*u_5; error(k)=rin(k)-yout(k); ei=ei+error(k)*ts; kp=0.8;ki=0.005;kd=3.0; u(k)=kp*error(k)+kd*(error(k)-error_1)/ts+ki*ei; if u(k)>=110 u(k)=110; end if u(k)<=-110 u(k)=-110; end %返回PID参数 u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k); y_3=y_2;y_2=y_1;y_1=yout(k); error_1=error(k); end %获得传递函数模型数据 %模糊PID控制系统 a=newfis('fuzzf'); %创建新的模糊推理系统 f1=1; a=addvar(a,'input','e',[-5*f1,5*f1]); %添加e 的模糊语言变量 a=addmf(a,'input',1,'NB','trimf',[ -7.5 -5 -2.5]); %添加e 的模糊语言变量的隶属度函数(z型) a=addmf(a,'input',1,'NS','trimf', [-5 -2.5 0]); a=addmf(a,'input',1,'ZE','trimf',[-2.5 0 2.5]); a=addmf(a,'input',1,'PS','trimf',[0 2.5 5]); a=addmf(a,'input',1,'PB','smf',[2.5 5 7.5]); f2=1; a=addvar(a,'input','ec',[-10*f2,10*f2]); %添加ec 的模糊语言变量 a=addmf(a,'input',2,'NB','trimf',[-15 -10 -5]); a=addmf(a,'input',2,'NS','trimf',[-10 -5 0]); a=addmf(a,'input',2,'Z','trimf', [-5 -5.551e-017 5]); a=addmf(a,'input',2,'PS','trimf', [0 5 10]); a=addmf(a,'input',2,'PB','smf', [5 10 15]); f3=1.5; a=addvar(a,'output','u',[0*f3,220*f3]); %添加u 的模糊语言变量 a=addmf(a,'output',1,'NB','trimf', [-55 -4.441e-016 55]); a=addmf(a,'output',1,'NS','trimf', [0 55 110]); a=addmf(a,'output',1,'Z','trimf', [55 110 165]); a=addmf(a,'output',1,'PS','trimf', [110 165 220]); a=addmf(a,'output',1,'PB','smf',[165 220 275]); rulelist=[1 1 5 1 1; %编辑模糊规则 1 2 5 1 1; 1 3 5 1 1; 1 4 5 1 1; 1 5 5 1 1; 2 1 5 1 1; 2 2 4 1 1; 2 3 4 1 1; 2 4 3 1 1; 2 5 2 1 1; 3 1 5 1 1; 3 2 4 1 1; 3 3 3 1 1; 3 4 2 1 1; 3 5 2 1 1; 4 1 4 1 1; 4 2 3 1 1; 4 3 2 1 1; 4 4 2 1 1; 4 5 1 1 1; 5 1 1 1 1; 5 2 1 1 1; 5 3 1 1 1; 5 4 1 1 1; 5 5 1 1 1;] a=addrule(a,rulelist); %添加模糊规则函数 showrule(a) %显示模糊规则函数 a1=setfis(a,'DefuzzMethod','centroid'); %设置模糊系统特性writefis(a1,'fuzzf'); %保存模糊系统 a2=readfis('fuzzf'); %从磁盘读出保存的模糊系统 disp('fuzzy Controller table:e=[-5,+5],ec=[-10,+10]');%显示矩阵和数组内容 Ulist=zeros(5,5); %全零矩阵 for i=1:5 for j=1:5 e(i)=-4+i; ec(j)=-4+j; Ulist(i,j)=evalfis([e(i),ec(j)],a2); %完成模糊推理计算 end end Ulist=ceil(Ulist) sys1=tf([1],[60,1],'inputdelay',80); dsys=c2d(sys1,ts,'zoh'); [num,den]=tfdata(dsys,'v'); U_1=0;U_2=0;U_3=0;U_4=0;U_5=0; Y_1=0;Y_2=0;Y_3=0;e_1=0.0;ec_1=0.0; Error_1=0;Ei=0 for k=1:1:300 time(k)=k*ts; rin(k)=40; U(k)=evalfis([e_1,ec_1],a2); %完成模糊推理计算Yout(k)=-den(2)*Y_1+num(2)*U_5; Error(k)=rin(k)-Yout(k); ki=0.003; Ei=Ei+Error(k)*ts; U(k)=U(k)+ki*Ei; %返回参数 U_5=U_4;U_4=U_3;U_3=U_2;U_2=U_1;U_1=U(k); Y_3=Y_2;Y_2=Y_1;Y_1=Yout(k); e_1=Error(k); ec_1=Error(k)-Error_1; Error_1=Error(k); end %朝正无穷方向取整 figure(1); plotfis(a2); figure(2);plotmf(a,'input',1); figure(3);plotmf(a,'input',2); figure(4);plotmf(a,'output',1); figure(1);plot(time,rin,'b',time,yout,'r'); xlabel('time(s)');ylabel('rin,yout'); figure(2);plot(time,u,'r'); xlabel('time(s)');ylabel('u'); figure(3);plot(time,rin,'b',time,Yout,'r'); xlabel('time(s)');ylabel('rin,yout'); figure(4);plot(time,U,'r'); xlabel('time(s)');ylabel('u'); figure(5); plotfis(a2); figure(6);plotmf(a2,'input',1); figure(7);plotmf(a2,'input',2); figure(8);plotmf(a2,'output',1);
/
本文档为【MATLAB模糊控制仿真程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索