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