模糊控制程序一阶延时
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
语言变量X ,Y ,Z 的隶属度函数.
设计带有纯延迟的一阶惯性环节(假设T=6,=0.02):
G(s)=s
e s
6102.0+
的模糊控制器,观察仿真结果。
编程如下:
%被控系统建模 num=1; den=[6,1];
[a1,b,c,d]=tf2ss(num,den);%传递函数转换到状态空间 x=[0];
%系统参数
T=0.01;h=T ; td=0.02 ; N=1000; nd=td/T;%系统纯延迟 R=ones(1,N);%参考输入
%定义输入和输出变量及隶属度函数
a=newfis('Simple');
a=addvar(a,'input','e',[-4 4]);
a=addmf(a,'input',1,'NB','trimf',[-4,-4,-2]); a=addmf(a,'input',1,'NS','trimf',[-4,-2,0]); a=addmf(a,'input',1,'ZO','trimf',[-2,0,2]);
a=addmf(a,'input',1,'PS','trimf',[0,2,4]);
a=addmf(a,'input',1,'PB','trimf',[2,4,4]);
a=addvar(a,'input','de',[-4 4]);
a=addmf(a,'input',2,'NB','trimf',[-4,-4,-2]); a=addmf(a,'input',2,'NS','trimf',[-4,-2,0]); a=addmf(a,'input',2,'ZO','trimf',[-2,0,2]);
a=addmf(a,'input',2,'PS','trimf',[0,2,4]);
a=addmf(a,'input',2,'PB','trimf',[2,4,4]);
a=addvar(a,'output','u',[-4 4]);
a=addmf(a,'output',1,'NB','trimf',[-4,-4,-2]); a=addmf(a,'output',1,'NS','trimf',[-4,-2,0]); a=addmf(a,'output',1,'ZO','trimf',[-2,0,2]); a=addmf(a,'output',1,'PS','trimf',[0,2,4]);
a=addmf(a,'output',1,'PB','trimf',[2,4,4]); %模糊规则矩阵
rr=[5 5 4 4 3
5 4 4 3 3
4 4 3 3 2
4 3 3 2 2
3 3 2 2 1];
r1=zeros(prod(size(rr)),3);k=1;
for i=1:size(rr,1)
for j=1:size(rr,2)
r1(k, : )=[i, j, rr(i, j)];
k=k+1;
end
end
[r , s]=size(r1);
r2=ones(r,2);
rulelist=[r1,r2];
a=addrule(a,rulelist);
%采用模糊控制器的二阶系统仿真
e=0;de=0;
ke=30;kd=5;ku=1;
for k=1:N
%输入变量变换至论域
e1=ke*e;
de1=kd*de;
if e1>=4
e1=4;
else if e1<=-4
e1=-4;
end
if de1>=4
de1=4;
else if de1<=-4
de1=-4;
end
%模糊推理,计算出被控对象的控制输入
in=[e1 de1];
u=ku*evalfis(in,a);
uu(1,k)=u;
if k<=nd
u=0;
else
u=uu(1,k-nd);
end
%控制作用于被控系统,计算系统输出;利用龙格—库塔法进行系统仿真k0=a1*x+b*u;
k1=a1*(x+h*k0/2)+b*u;
k2=a1*(x+h*k1/2)+b*u;
k3=a1*(x+h*k2)+b*u;
x=x+(k0+2*k1+2*k2+k3)*h/6;
y=c*x+d*u;
yy(1,k)=y;
%计算系统输出误差及误差导数
e1=e;e=y-R(1,k);
de=(e-e1)/T;
end
%典型二阶环节的模糊控制输出曲线
kk=[1:N]*T;
figure(1);
plot(kk,R,'k',kk,yy,'r');grid on
xlabel('时间(秒)');ylabel('输出');
B = prod(A,dim) takes the products along the dimension of A specified by scalar dim.
B=prod(A,dim),依据给定的dim值,求解A矩阵的积。
当dim值为1时,B结果为A矩阵的各列元素的积,以行向量形式表达结果;
当dim值为2时,B结果为A矩阵的各行元素的积,以列向量形式表达结果;
当dim值为3(或)时,B结果为A矩阵的原型,不做任何运算。
Examples
例如:
The magic square of order 3 is
Magic square矩阵的命令值为3得到:
M = magic(3)
M =
8 1 6
3 5 7
4 9 2
The product of the elements in each column is
各列上元素的积通过如下命令便可获得:
prod(M) =
96 45 84
The product of the elements in each row can be obtained by:
在各行上的元素的积同样能够得到,通过如下形式的命令:
prod(M,2) =
48
105
72
floor函数
floor(x),有时候也写做Floor(x),其功能是“下取整”,或者说“向下舍入”,即取不大于x的最大整数
(与“四舍五入”不同,下取整是直接去掉小数部分),例如:
x=3.14,floor(x)=3
y=9.99999,floor(y)=9