割り当て1:再帰的最小二乗法パラメータの識別
識別されたシステムの数学モデルが次の式で記述されているとします。
ここで、x(k)は、分散が0.1のホワイトノイズです。請求:
-
入力信号u(k)が分散1のホワイトノイズシーケンスである場合、システムの入力データと出力データを使用して、上記のモデルのパラメータをオンラインで識別します。
-
入力信号u(k)が振幅1の逆Mシーケンスである場合、システムの入力データと出力データを使用して、上記のモデルのパラメーターをオンラインで識別します。
-
入力信号u(k)が単位ステップ信号の場合、システムの入力データと出力データを使用して、上記のモデルのパラメーターをオンラインで識別します。
システムモデルパラメータの識別精度に対するさまざまな入力信号の影響を分析および比較します。
解決:
コードを改善する必要があり、まだ変更されていません
【参照コード】
①分散1のホワイトノイズシーケンス
%递推最小二乘参数估计(RLS)
clear all; close all;
a=[1 -1.5 0.7 0.1]';
b=[1 2 1.5]'; d=2; %对象参数
na=length(a)-1; nb=length(b)-1; %na=3、nb=2为A、B阶次
L=400; %仿真长度
uk=zeros(d+nb,1); %输入初值:uk(i)表示u(k-i)
yk=zeros(na,1); %输出初值
u=randn(L,1); %输入采用白噪声序列
xi=sqrt(1)*randn(L,1); %白噪声序列 方差=1
theta=[a(2:na+1);b]; %对象参数真值
thetae_1=zeros(na+nb+1,1); %thetae初值
P=10^6*eye(na+nb+1);
for k=1:L
phi=[-yk;uk(d:d+nb)]; %此处phi为列向量
y(k)=phi'*theta+xi(k); %采集输出数据
%递推最小二乘法
K=P*phi/(1+phi'*P*phi);
thetae(:,k)=thetae_1+K*(y(k)-phi'*thetae_1);
P=(eye(na+nb+1)-K*phi')*P;
%更新数据
thetae_1=thetae(:,k);
for i=d+nb:-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
plot([1:L],thetae); %line([1,L],[theta,theta]);
xlabel('k'); ylabel('参数估计a、b');
legend('a_1','a_2','a_3','b_0','b_1','b_2'); axis([0 L -2 1.5]);
②振幅1の逆Mシーケンス
%递推最小二乘参数估计(RLS)
clear all; close all;
a=[1 -1.5 0.7 0.1]';
b=[1 2 1.5]'; d=2; %对象参数
na=length(a)-1; nb=length(b)-1; %na=3、nb=2为A、B阶次
L=400; %仿真长度
uk=zeros(d+nb,1); %输入初值:uk(i)表示u(k-i)
yk=zeros(na,1); %输出初值
%u=randn(L,1); %输入采用白噪声序列
xi=sqrt(1)*randn(L,1); %白噪声序列 方差=1
theta=[a(2:na+1);b]; %对象参数真值
thetae_1=zeros(na+nb+1,1); %thetae初值
P=10^6*eye(na+nb+1);
%M序列及逆M序列的产生
%M序列长度 L=400; %仿真长度
x1=1; x2=1; x3=1; x4=0; %移位寄存器初值xi-1、xi-2、xi-3、xi-4
S=1; %方波初值
for k=1:L
M(k)=xor(x3,x4); %进行异或运算,产生M序列
IM=xor(M(k),S); %进行异或运算,产生逆M序列
if IM==0
u(k)=-1;
else
u(k)=1;
end
S=not(S); %产生方波
x4=x3; x3=x2; x2=x1; x1=M(k); %寄存器移位
phi=[-yk;uk(d:d+nb)]; %此处phi为列向量
y(k)=phi'*theta+xi(k); %采集输出数据
%递推最小二乘法
K=P*phi/(1+phi'*P*phi);
thetae(:,k)=thetae_1+K*(y(k)-phi'*thetae_1);
P=(eye(na+nb+1)-K*phi')*P;
%更新数据
thetae_1=thetae(:,k);
for i=d+nb:-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
plot([1:L],thetae); %line([1,L],[theta,theta]);
xlabel('k'); ylabel('参数估计a、b');
legend('a_1','a_2','a_3','b_0','b_1','b_2'); axis([0 L -2 4]);
③ユニットステップ信号
%递推最小二乘参数估计(RLS)
clear all; close all;
a=[1 -1.5 0.7 0.1]';
b=[1 2 1.5]'; d=2; %对象参数
na=length(a)-1; nb=length(b)-1; %na=3、nb=2为A、B阶次
L=400; %仿真长度
uk=zeros(d+nb,1); %输入初值:uk(i)表示u(k-i)
yk=zeros(na,1); %输出初值
u=ones(L,1);%输入采用单位阶跃信号
xi=sqrt(1)*randn(L,1); %白噪声序列 方差=1
theta=[a(2:na+1);b]; %对象参数真值
thetae_1=zeros(na+nb+1,1); %thetae初值
P=10^6*eye(na+nb+1);
for k=1:L
phi=[-yk;uk(d:d+nb)]; %此处phi为列向量
y(k)=phi'*theta+xi(k); %采集输出数据
%递推最小二乘法
K=P*phi/(1+phi'*P*phi);
thetae(:,k)=thetae_1+K*(y(k)-phi'*thetae_1);
P=(eye(na+nb+1)-K*phi')*P;
%更新数据
thetae_1=thetae(:,k);
for i=d+nb:-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
plot([1:L],thetae); %line([1,L],[theta,theta]);
xlabel('k'); ylabel('参数估计a、b');
legend('a_1','a_2','a_3','b_0','b_1','b_2'); axis([0 L -2 1.5]);
宿題2最小分散セルフチューニング制御実験
2次の純粋なラグを持つ制御対象の数学モデルパラメータが不明であるか、時間とともにゆっくりと変化すると仮定すると、シミュレーション実験では次のモデルが使用されます。
ここで、x(k)は、分散が0.1のホワイトノイズです。請求:
-
入力yr(k)が振幅10のステップ信号として設定されている場合、最小分散直接セルフチューニング制御アルゴリズムは、上記のオブジェクトの閉ループ制御を実行するように設計されています。
-
入力yr(k)が振幅10の方形波信号として設定されている場合、最小分散の直接自己補正制御アルゴリズムは、上記のオブジェクトの閉ループ制御を実行するように設計されています。
-
告発されたオブジェクトモデルが次のように変更された場合:
上記の実験(1)と(2)を繰り返しますが、対照結果はどうなりますか?理由を分析します。
【参照コード】
%最小二乘参数估计
clear all;
宿題3モデル参照適応制御実験
制御対象のモデルパラメータが不明であるか、時間とともにゆっくりと変化するとしますが、その状態変数は完全に観察可能です。
シミュレーションでは、状態方程式は次のように解釈されます。
参照モデルを選択します。
完全に観察可能な状態のモデル参照適応制御システムを次の図に示します。
コントローラの適応法則は次のとおりです。
【参照コード】
%最小二乘参数估计
clear all;