最小二乘法以及拓展的最小二乘法辨识电机参数

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)

上一篇:能“读懂”运动意图让瘫痪病人站立,外骨骼机器人离应用又进一步


下一篇:空间四面体体积公式