自适应控制程序讲解学习Word格式文档下载.docx
- 文档编号:18846309
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:34
- 大小:225.24KB
自适应控制程序讲解学习Word格式文档下载.docx
《自适应控制程序讲解学习Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《自适应控制程序讲解学习Word格式文档下载.docx(34页珍藏版)》请在冰豆网上搜索。
subplot(2,1,2);
stairs(u);
axis([0L-1.51.5]);
逆M序列幅值'
逆M序列'
%白噪声及有色噪声序列的产生
设ξ(k)为均值为0,方差为1的高斯白噪声序列,e(k)为有色噪声序列:
高斯白噪声序列ξ(k)在Matlab中由rand()函数产生,程序如下:
L=500;
%仿真长度
d=[1-1.50.70.1];
c=[10.50.2];
%分子分母多项式系数
nd=length(d)-1;
nc=length(c)-1;
%阶次
xik=zeros(nc,1);
%白噪声初值
ek=zeros(nd,1);
xi=randn(L,1);
%产生均值为0,方差为1的高斯白噪声序列
e(k)=-d(2:
nd+1)*ek+c*[xi(k);
xik];
%产生有色噪声
%数据更新
fori=nd:
-1:
2
ek(i)=ek(i-1);
ek
(1)=e(k);
fori=nc:
xik(i)=xik(i-1);
xik
(1)=xi(k);
plot(xi);
噪声幅值'
白噪声序列'
plot(e);
有色噪声序列'
%批处理最小二乘参数估计(LS)
考虑如下系统:
式中ξ(k)为方差为1的白噪声。
a=[1-1.50.7]'
;
b=[10.5]'
d=3;
%对象参数
na=length(a)-1;
nb=length(b)-1;
%计算阶次
%数据长度
uk=zeros(d+nb,1);
yk=zeros(na,1);
%输入初值
%移位寄存器初值,方波初值
xi=rand(L,1);
%白噪声序列
theta=[a(2:
na+1);
b];
%对象参数真值
phi(k,:
)=[-yk;
uk(d:
d+nb)]'
%phi(k,:
)为行向量,便于组成phi矩阵
y(k)=phi(k,:
)*theta+xi(k);
%采集输出数据
M=xor(x3,x4);
%更新数据
x1=M;
fori=nb+d:
uk(i)=uk(i-1);
uk
(1)=u(k);
fori=na:
yk(i)=yk(i-1);
yk
(1)=y(k);
thetaevaluation=inv(phi'
*phi)*phi'
*y'
%计算参数估计值
thetaevaluation=
-1.5362
0.6802
1.0068
0.4864
%遗忘因子递推最小二乘参数估计(FFRLS)
式中ξ(k)为均值为0、方差为0.1的白噪声,
对象时变参数
为:
取遗忘因子λ=0.98,
L=1000;
%数据长度
%输入输出初值
u=randn(L,1);
%输入采用方差为1的白噪声序列
xi=sqrt(0.1)*randn(L,1);
%方差为0.1的白噪声干扰序列
%theta=[a(2:
thetae_1=zeros(na+nb+1,1);
%参数初值
P=10^6*eye(na+nb+1);
lambda=0.98;
%遗忘因子范围[0.91]
ifk==501
a=[1-10.4]'
b=[1.50.2]'
%对象参数突变
theta(:
k)=[a(2:
phi=[-yk;
d+nb)];
y(k)=phi'
*theta(:
k)+xi(k);
%采样输出数据
%遗忘因子递推最小二乘公式
K=P*phi/(lambda+phi'
*P*phi);
thetae(:
k)=thetae_1+K*(y(k)-phi'
*thetae_1);
P=(eye(na+nb+1)-K*phi'
)*P/lambda;
%更新数据
thetae_1=thetae(:
k);
fori=d+nb:
uk
(1)=u(k);
plot([1:
L],thetae(1:
na,:
));
holdon;
L],theta(1:
),'
k:
'
参数估计a'
legend('
a_1'
'
a_2'
axis([0L-22]);
L],thetae(na+1:
na+nb+1,:
L],theta(na+1:
参数估计b'
b_0'
b_1'
axis([0L-0.52]);
%增广递推最小二乘参数估计(ERLS)
式中ξ(k)为方差为0.1的白噪声。
选择方差为1的白噪声作为输入信号u(k).
c=[1-10.2]'
%噪声初值
xiek=zeros(nc,1);
%噪声估计初值
b;
c(2:
nc+1)];
thetae_1=zeros(na+nb+1+nc,1);
%参数初值,na+nb+1+nc为辨识参数个数
P=10^6*eye(na+nb+1+nc);
d+nb);
%测量向量
*theta+xi(k);
phie=[-yk;
xiek];
%估计的测量向量
%增广递推最小二乘公式
K=P*phie/(1+phie'
*P*phie);
k)=thetae_1+K*(y(k)-phie'
P=(eye(na+nb+1+nc)-K*phie'
)*P;
xie=y(k)-phie'
*thetae(:
%白噪声估计值
xiek(i)=xiek(i-1);
xiek
(1)=xie;
figure
(1)
figure
(2)
axis([0L01.5]);
figure(3)
L],thetae(na+nb+2:
na+nb+nc+1,:
参数估计c'
c_1'
c_2'
递推最小二乘参数估计(RLS)
%计算阶次,na=2,nb=1
%数据长度(仿真长度)
%输入输出初值uk:
4x1,ykx1
%方差为0.1的白噪声干扰序列
%对象参数真值theta=[-1.5,0.7;
1,0.5]
%参数初值θ为4x1的全零矩阵
%此处phi为列向量4x1
%采集输出数据
%递推公式
K=P*phi/(1+phi'
L],thetae);
%line([1:
L],[theta,theta]);
参数估计a,b'
%最小方差控制(MVC)
取期望输出yr(k)为幅值为10的方波信号。
closeall;
a=[1-1.70.7];
b=[10.5];
c=[10.2];
d=4;
%对象参数
%计算阶次
nh=nb+d-1;
%nh为多项式H的阶次
L=400;
yrk=zeros(nc,1);
yr=10*[ones(L/4,1);
-ones(L/4,1);
ones(L/4,1);
-ones(L/4+d,1)];
%期望输出
%方差为0.1的白噪声序列
[h,f,g]=singlediophantine(a,b,c,d);
%求解单步Diophantine方程
time(k)=k;
y(k)=-a(2:
na+1)*yk+b*uk(d:
d+nb)+c*[xi(k);
%采集输出数据
u(k)=(-h(2:
nh+1)*uk(1:
nh)+c*[yr(k+d:
k+d-min(d,nc));
yrk(1:
nc-d)]-g*[y(k);
yk(1:
na-1)])/h
(1);
%求控制量
yrk(i)=yrk(i-1);
ifnc>
yrk
(1)=yr(k);
plot(time,yr(1:
L),'
r:
time,y);
y_r(k)、y(k)'
y_r(k)'
y(k)'
plot(time,u);
u(k)'
单步Diophantine方程求解
求解下列系统的单步Diophantine方程:
(1)
(2)
(3)
%单步Diophantine方程的求解
a=[1-1.50.7];
b=[10.5];
c=[1];
d=3;
%例4.1
(1)
%a=[1-0.95];
b=[12];
c=[1-0.7];
d=2;
%例4.1
(2)
%a=[1-1.70.7];
b=[0.91];
c=[12];
d=4;
%例4.1(3)
[e,f,g]=sindiophantine(a,b,c,d)%调用函数sindiophantine
function[e,f,g]=singlediophantine(a,b,c,d)%单步Diophantine方程求解
ne=d-1;
ng=na-1;
%E,G的阶次
ad=[a,zeros(1,ng+ne+1-na)];
cd=[c,zeros(1,ng+d-nc)];
%令a(na+2)=a(na+3)=...=0
e
(1)=1;
fori=2:
ne+1
e(i)=0;
forj=2:
i
e(i)=e(i)+e(i+1-j)*ad(j);
e(i)=cd(i)-e(i);
%计算ei
fori=1:
ng+1
g(i)=0;
forj=1:
g(i)=g(i)+e(ne+2-1)*ad(i+j);
g(i)=cd(i+d)-g(i);
%计算gi
f=conv(b,e);
%计算F
e=
1.00001.50001.5500
f=
1.00002.00002.30000.7750
g=
1.2750-1.0850
多步Diophantine方程求解
求解如下系统的多步Diophantine方程,并去预测长度N=3
%多步Diophantine方程的求解
a=[1-2.72.4-0.7];
nb=length(b)-1;
nc=length(c)-1;
%A、B、C的阶次
N=3;
%预测步数
[E,F,G]=multidiophantine(a,b,c,N)%调用函数multidiophantine
function[E,F,G]=multidiophantine(a,b,c,N)
%********************************************************
%功能:
多步Diophanine方程的求解
%调用格式:
[E,F,G]=sindiophantine(a,b,c,N)(注:
d=1)
%输入参数:
多项式A、B、C系数向量及预测步数(共4个)
%输出参数:
Diophanine方程的解E、F、G(共3个)
%E、F、G的初值
E=zeros(N);
E(1,1)=1;
F(1,:
)=conv(b,E(1,:
ifna>
=nc
G(1,:
)=[c(2:
nc+1)zeros(1,na-nc)]-a(2:
%令c(nc+2)=c(nc+3)=...=0
else
)=c(2:
nc+1)-[a(2:
na+1)zeros(1,nc-na)];
%令a(na+2)=a(na+3)=...=0
%求E、G、F
forj=1:
N-1
fori=1:
j
E(j+1,i)=E(j,i);
E(j+1,j+1)=G(j,1);
fori=2:
na
G(j+1,i-1)=G(j,i)-G(j,1)*a(i);
G(j+1,na)=-G(j,1)*a(na+1);
F(j+1,:
)=conv(b,E(j+1,:
%最小方差自校正控制
用最小方差自校正控制算法对以下系统进行闭环控制:
%最小方差间接自校正控制
c=[10.2];
%na、nb、nc为多项式A、B、C阶次
nf=nb+d-1;
%nf为多项式F的阶次
%控制步数
%输入初值:
uk(i)表示u(k-i);
%输出初值
%期望输出初值
%白噪声估计初值
%期望输出
%白噪声序列
%RELS初值设置
thetae_1=0.001*ones(na+nb+1+nc,1);
%非常小的正数(这里不能为0)
%递推增广最小二乘法
phie=[-yk;
%白噪声的估计值
%提取辨识参数
ae=[1thetae(1:
na,k)'
];
be=thetae(na+1:
na+nb+1,k)'
ce=[1thetae(na+nb+2:
na+nb+1+nc,k)'
ifabs(be
(2))>
0.9
be
(2)=sign(ce
(2))*0.9;
%MVC算法要求B稳定
ifabs(ce
(2))>
ce
(2)=sign(ce
(2))*0.9;
[e,f,g]=sindiophantine(ae,be,ce,d);
%求解单步Diophantine方程
u(k)=(-f(2:
nf+1)*uk(1:
nf)+ce*[yr(k+d:
na-1)])/f
(1);
%求控制量
figure
(1);
ylabel('
y_r(k
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自适应 控制程序 讲解 学习