基于最小方差控制的直接自校正控制

该博客介绍了一种基于最小方差控制(MVC)的直接自校正控制方法,通过MATLAB实现递推辨识和控制过程。文章详细展示了控制系统的初始化、递推估计与控制量计算,并通过示例输出了系统的动态响应,包括期望输出、实际输出和控制输入的图像,以及参数估计的演变情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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阶次
nd=k-1;nf=nb+nd; ne=na-1; %nd、nf、ng为多项式D、F、G的阶次

K=400; %控制步数
ut=zeros(k+nf,1); %输入历史的初值
yt=zeros(k+ne,1); %输出历史的初值
yet=zeros(nc,1); %输出估计历史的初值
yrt=zeros(nc,1); %期望输出历史初值
wt=zeros(nc,1); %白噪声历史的初值
wet=zeros(nc+k-1,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+k+nc+nc+nd,1);
P=10^8*eye(na+nb+k+nc+nc+nd);

%*********************递推辨识和控制*********************%
for t=1:K
    y(t)=-a(2:na+1)*yt(1:na)+b*ut(k:k+nb)+c*[w(t);wt]; %采集输出数据

    phie=[yt(k:k+ne);ut(k:k+nf);-yet(1:nc);wet];
    
    ye=phie'*thetae_1; %输出的估计值,用之前的参数向量计算
    
    %递推增广最小二乘法C(Z)*y(t)=E(Z)*y(t-k)+F(Z)*u(t-k)+C(Z)*D(Z)*w(t)
    %实际用此式进行计算式,使用t-k时刻的数据去计算t时刻的输出,故y(t-1)...y(t-nc)
    %是不知道的,故用估计输出代替
    L=P*phie/(1+phie'*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值