模糊控制程序一阶延时

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档