close all;
clear all;
clc;
%*********************系统初始化*********************%
a=[1 -1.7 0.7]; b=[1 0.5]; c=[1 0.2]; k=4; %对象参数
na=length(a)-1; nb=length(b)-1; nc=length(c)-1; %na、nb、nc为多项式A、B、C阶次
nf=nb+k-1; %nf为多项式F的阶次
K=400; %控制步数
ut=zeros(k+nb,1); %输入历史的初值
yt=zeros(na,1); %输出历史的初值
yrt=zeros(nc,1); %期望输出历史的初值
wt=zeros(nc,1); %白噪声历史的初值,用来计算输出y(k)
wet=zeros(nc,1); %白噪声估计历史的初值,用来参数辨识
yr=10*[ones(K/2,1);-ones(K/2+k,1)]; %期望输出
w=sqrt(0.1)*randn(K,1); %白噪声序列
%辨识参数初值设置
thetae_1=0.001*ones(na+nb+1+nc,1);
P=10^8*eye(na+nb+1+nc);
%*********************递推辨识与控制*********************%
for t=1:K
y(t)=-a(2:na+1)*yt+b*ut(k:k+nb)+c*[w(t);wt]; %采集输出数据
phie=[-yt;ut(k:k+nb);wet];
%递推增广最小二乘法A(Z)*y(t)=B(Z)*u(t-k)+C(Z)*w(t)
L=P*phie/(1+phie'*P*phie);
thetae(:,t)=thetae_
基于最小方差控制的间接自校正控制
最新推荐文章于 2025-01-21 16:26:37 发布