自适应控制程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

% M 序列及其逆序列的产生

设M 序列{M (k )}由如下4位移位寄存器产生:

34i i i x x x --=⊕

{S (k )}为方波序列,逆M 序列{IM (k )= {M (k )⊕S (k )}

clear all; close all;

L=60; %序列长度

x1=1;x2=1;x3=1;x4=0; %移位寄存器初值

S=1; %方波初值

for k=1:L

IM=xor(S,x4); %进行异或运算,产生逆M 序列

if IM==0

u(k)=-1;

else

u(k)=1;

end

S=not(S); %产生方波

M(k)=xor(x3,x4); %产生M 序列

x4=x3;x3=x2;x2=x1;x1=M(k); %寄存器移位

end

subplot(2,1,1);

stairs(M);grid;

axis([0 L/2 -0.5 1.5]);xlabel('k');ylabel('M 序列幅值');title('M 序列');

subplot(2,1,2);

stairs(u);grid;

axis([0 L -1.5 1.5]);xlabel('k');ylabel('逆M 序列幅值');title('逆M 序列');

%白噪声及有色噪声序列的产生

设ξ(k) 为均值为0,方差为1的高斯白噪声序列,e(k)为有色噪声序列:

11211123()10.50.2()()()()()()1 1.50.70.1C z z z e k G z k k k D z z z z

ξξξ--------++===-++ 高斯白噪声序列 ξ(k)在Matlab 中由rand()函数产生,程序如下: clear all; close all;

L=500; %仿真长度

d=[1 -1.5 0.7 0.1]; c=[1 0.5 0.2]; % 分子分母多项式系数

nd=length(d)-1 ;nc=length(c)-1; %阶次

xik=zeros(nc,1); %白噪声初值

ek=zeros(nd,1);

xi=randn(L,1); %产生均值为0,方差为1的高斯白噪声序列

for k=1:L

e(k)=-d(2:nd+1)*ek+c*[xi(k);xik]; %产生有色噪声

%数据更新

for i=nd:-1:2

ek(i)=ek(i-1);

end

ek(1)=e(k);

for i=nc:-1:2

xik(i)=xik(i-1);

end

xik(1)=xi(k);

end

subplot(2,1,1);

plot(xi);

xlabel('k');ylabel('噪声幅值');title('白噪声序列');

subplot(2,1,2);

plot(e);

xlabel('k');ylabel('噪声幅值');title('有色噪声序列');

%批处理最小二乘参数估计(LS)

考虑如下系统:

() 1.5(1)0.7(2)(3)0.5(4)()y k y k y k u k u k k ξ--+-=-+-+ 式中ξ(k )为方差为1的白噪声。

clear all;

a=[1 -1.5 0.7]';b=[1 0.5]';d=3; %对象参数

na=length(a)-1;nb=length(b)-1; %计算阶次

L=500; %数据长度

uk=zeros(d+nb,1);yk=zeros(na,1); %输入初值

x1=1;x2=1;x3=1;x4=0;S=1;%移位寄存器初值,方波初值

xi=rand(L,1);%白噪声序列

theta=[a(2:na+1);b]; %对象参数真值

for k=1:L

phi(k,:)=[-yk;uk(d:d+nb)]'; %phi(k,:)为行向量,便于组成phi 矩阵 y(k)=phi(k,:)*theta+xi(k); %采集输出数据

IM=xor(S,x4);

if IM==0

u(k)=-1;

else

u(k)=1;

end

S=not(S);M=xor(x3,x4); %产生M 序列

%更新数据

x4=x3;x3=x2;x2=x1;x1=M;

for i=nb+d:-1:2

uk(i)=uk(i-1);

end

uk(1)=u(k);

for i=na:-1:2

yk(i)=yk(i-1);

end

yk(1)=y(k);

end

thetaevaluation=inv(phi'*phi)*phi'*y' %计算参数估计值

thetaevaluation =

-1.5362

0.6802

1.0068

0.4864

%遗忘因子递推最小二乘参数估计(FFRLS)

考虑如下系统:

1201()(1)(2)(3)(4)()y k a y k a y k b u k b u k k ξ+-+-=-+-+ 式中ξ(k )为均值为0、方差为0.1的白噪声,

对象时变参数T 1201()[,,,]k a a b b θ=为:[ 1.5,0.7,1,0.5],500()[1,0.4,1.5,0.2],500

T T k k k θ⎧-≤⎪=⎨->⎪⎩ 取遗忘因子λ=0.98,

clear all; close all;

a=[1 -1.5 0.7]';b=[1 0.5]';d=3; %对象参数

na=length(a)-1;nb=length(b)-1; %计算阶次

L=1000;%数据长度

uk=zeros(d+nb,1);yk=zeros(na,1); %输入输出初值

相关文档
最新文档