%ex6.m 模糊控制器S函数(ctrl)
function[sys,x0,str,ts]=spacemodel(t,x,u,flag)
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
case 3,
sys=mdlOutputs(t,x,u);
case {2,4,9}
sys=[];
otherwise
error(['Unhandled flag=',num2str(flag)]);
end
function[sys,x0,str,ts]=mdlInitializeSizes
sizes=simsizes;
sizes.NumContStates =0;
sizes.NumDiscStates =0;
sizes.NumOutputs =1;
sizes.NumInputs =2;
sizes.DirFeedthrough =1;
sizes.NumSampleTimes =1;
sys=simsizes(sizes);
x0=[];
str=[];
ts=[0 0];
function sys=mdlOutputs(t,x,u)
x=[u(1);u(2)];
load K1_file;
ut1=K1*x;
ut2=K2*x;
ut3=K3*x;
ut4=K4*x;
ut5=K5*x;
%%%%%%%%%%%%%%%%%%%%
out_sum=0;
temp_sum=0;
xm1=0;
xm2=0;
xm3=0;
xm4=0;
xm5=0;
xm6=0;
xm7=0;
xm8=0;
xm9=0;
ym1=0;
ym2=0;
ym3=0;
ym4=0;
ym5=0;
ym6=0;
ym7=0;
ym8=0;
ym9=0;
out=0;
out_sum=0;
temp_sum=0;
temp=1;
xm1 = gaussmf(x(1), [1 0]);
ym1 = gaussmf(x(2)/4, [1 0]);
if xm1>= ym1,
temp=ym1;
else
temp=xm1;
end
out1=temp.*K1*x;
out_sum=out_sum+out1;
temp_sum=temp_sum+temp;
xm2 = gaussmf(x(1), [1 0]);
ym2 = gaussmf(x(2)/4, [1 -4]);
if xm2>= ym2,
temp=ym2;
else
temp=xm2;
end
out2=temp.*K2*x;
out_sum=out_sum+out2;
temp_sum=temp_sum+temp;
xm3 = gaussmf(x(1), [1 0]);
ym3 = gaussmf(x(2)/4, [1 4]);
if xm3>= ym3,
temp=ym3;
else
temp=xm3;
end
out3=temp.*K2*x;
out_sum=out_sum+out3;
temp_sum=temp_sum+temp;
xm4 = gaussmf(x(1), [1 -pi/3]);
ym4 = gaussmf(x(2)/4, [1 0]);
if xm4>= ym4,
temp=ym4;
else
temp=xm4;
end
out4=temp.*K3*x;
out_sum=out_sum+out4;
temp_sum=temp_sum+temp;
xm5 = gaussmf(x(1), [1 pi/3]);
ym5 = gaussmf(x(2)/4, [1 0]);
if xm3>= ym5,
temp=ym5;
else
temp=xm5;
end
out5=temp.*K3*x;
out_sum=out_sum+out5;
temp_sum=temp_sum+temp;
xm6 = gaussmf(x(1), [1 pi/3]);
ym6 = gaussmf(x(2)/4, [1 4]);
if xm6>= ym6,
temp=ym6;
else
temp=xm6;
end
out6=temp.*K4*x;
out_sum=out_sum+out6;
temp_sum=temp_sum+temp;
xm7 = gaussmf(x(1), [1 -pi/3]);
ym7 = gaussmf(x(2)/4, [1 -4]);
if xm3>= ym7,
temp=ym7;
else
temp=xm7;
end
out7=temp.*K4*x;
out_sum=out_sum+out7;
temp_sum=temp_sum+temp;
xm8 = gaussmf(x(1), [1 -pi/3]);
ym8 = gaussmf(x(2)/4, [1 4]);
if xm6>= ym8,
temp=ym8;
else
temp=xm8;
end
out8=temp.*K5*x;
out_sum=out_sum+out8;
temp_sum=temp_sum+temp;
xm9 = gaussmf(x(1), [1 pi/3]);
ym9 = gaussmf(x(2)/4, [1 -4]);
if xm9>= ym9,
temp=ym9;
else
temp=xm9;
end
out9=temp.*K5*x;
out_sum=out_sum+out9;
temp_sum=temp_sum+temp;
%%%%%%%%%%%%%%%%%%%%
ut=out_sum/temp_sum;
%ut=out_sum;
sys(1)=ut;
阿里matlab建模师
- 粉丝: 4614
- 资源: 2868
最新资源
- 基于java的校园新闻网站设计与实现.docx
- 基于java的校园疫情防控系统设计与实现.docx
- Qt pdf分割成png格式
- 基于java的校园志愿者管理系统设计与实现.docx
- 基于java的新生宿舍管理系统设计与实现.docx
- 基于java的学生毕业离校系统lw设计与实现.docx
- 基于java的影城管理系统设计与实现.docx
- 基于java的疫情网课管理系统设计与实现.docx
- 基于java的疫情防控期间某村外出务工人员信息管理系统设计与实现.docx
- 基于直接转矩控制的电机PMSM模型,永磁同步电机,直接转矩控制
- 基于java的幼儿园管理系统设计与实现.docx
- 基于java的在线动漫信息平台设计与实现.docx
- 基于java的游戏分享网站设计与实现.docx
- 基于java的准妈妈孕期交流平台设计与实现.docx
- 基于java的致远汽车租赁系统设计与实现.docx
- 基于java的职称评审管理系统lw设计与实现.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
前往页