1.分别用最小二乘法、递推最小二乘法、带遗忘因子的递推最小二乘法三种方法辨识一阶电机模型的参数值a,b
电机的一阶模型传函表达式
1.最小二乘法辨识:
是由输入输出构成的矩阵,是电机待辨识的a,b值
clear all
close all
randn('seed',1000); %seed表示采用v4版本的随机数产生器,100表明选定了一个初状态 随便什么数都可以
v=randn(1,100); %产生一组16个N(0,1)的高斯分布的随机噪声
L=15; %因为是4阶的 由N=2^n-1所计算出来%M序列长度2^4-1
%产生M序列
y1=1;y2=1;y3=1;y4=0;%四个移位寄存器的输出初始值
for i=1:L
x1=xor(y3,y4);
x2=y1;
x3=y2;
x4=y3;
y(i)=y4;
if y(i)>0.5
u(i)=-5; %幅值为5
else
u(i)=5;
end
y1=x1;y2=x2;y3=x3;y4=x4;
end
z=zeros(1,15); %定义输出观测值的长度
for i=2:15
z(i)=0.3679*z(i-1)+500*u(i)+1*v(i); %观测值
end
for i=2:15
H(i,1)=z(i-1);
H(i,2)=u(i);
end
Y=zeros(15,1);
for i=1:15
Y(i,1)=z(i);
end
H;
theta=(inv(H'*H))*H'*Y;
theta(1)
theta(2)
2.递推最小二乘法:
clear all
close all
randn('seed',1000); %seed表示采用v4版本的随机数产生器,100表明选定了一个初状态 随便什么数都可以
v=randn(1,100); %产生一组16个N(0,1)的高斯分布的随机噪声
L=100; %因为是4阶的 由N=2^n-1所计算出来%M序列长度2^4-1
%产生M序列
y1=1;y2=1;y3=1;y4=0;%四个移位寄存器的输出初始值
for i=1:L
x1=xor(y3,y4);
x2=y1;
x3=y2;
x4=y3;
y(i)=y4;
if y(i)>0.5
u(i)=-5; %幅值为5
else
u(i)=5;
end
y1=x1;y2=x2;y3=x3;y4=x4;
end
z=zeros(1,100); %定义输出观测值的长度
%计算参数 RLS
theta0=[0.0001,0.0001]';
P0=10^5*eye(2,2);
for i=2:100
z(i)=0.3679*z(i-1)+500*u(i)+1*v(i); %观测值
H=[z(i-1),u(i)]';%构造一个输入输出矩阵
k=P0*H*inv(1+H'*P0*H);
error=z(i)-H'*theta0;
theta1=theta0+k*error;
P1=(eye(2)-k*H')*P0; %P(N+1)
P0=P1;
theta0=theta1;
end
theta1(1)
theta1(2)
3.遗忘因子的递推最小二乘法
clear all
close all
randn('seed',1000); %seed表示采用v4版本的随机数产生器,100表明选定了一个初状态 随便什么数都可以
v=randn(1,100); %产生一组16个N(0,1)的高斯分布的随机噪声
L=100; %因为是4阶的 由N=2^n-1所计算出来%M序列长度2^4-1
%产生M序列
y1=1;y2=1;y3=1;y4=0;%四个移位寄存器的输出初始值
for i=1:L
x1=xor(y3,y4);
x2=y1;
x3=y2;
x4=y3;
y(i)=y4;
if y(i)>0.5
u(i)=-5; %幅值为5
else
u(i)=5;
end
y1=x1;y2=x2;y3=x3;y4=x4;
end
z=zeros(1,100); %定义输出观测值的长度
%计算参数 RLS
theta0=[0.0001,0.0001]';
P0=10^5*eye(2,2);
d=0.95
for i=2:100
z(i)=0.3679*z(i-1)+500*u(i)+1*v(i); %观测值
H=[z(i-1),u(i)]';%构造一个输入输出矩阵
K=P0*H*inv(d+H'*P0*H);
error=z(i)-H'*theta0;
theta1=theta0+K*error;
P1=(1/d)*(eye(2)-K*H')*P0; %P(N+1)
P0=P1;
theta0=theta1;
end
theta1(1)
theta1(2)