串联数组维度不一致

错误使用 vertcat
要串联的数组的维度不一致。

出错 control_Niuben (line 181)
dx=[x11_d;x12_d;x21_d;x22_d;x31_d;x32_d;s11_d;s21_d;s31_d;epsilon1_hat_d;nu1_hat_d;theta1_hat_d;M11_hat_d;epsilon2_hat_d;nu2_hat_d;theta2_hat_d;M21_hat_d;epsilon3_hat_d;nu3_hat_d;theta3_hat_d;M31_hat_d];

function [dx,yr1,yr2,yr3,x11,x12,x21,x22,x31,x32,theta1_hat,nu1_hat,epsilon1_hat,M11_hat,s11,theta2_hat,nu2_hat,epsilon2_hat,M21_hat,s21,theta3_hat,nu3_hat,epsilon3_hat,M31_hat,s31,u1,u2,u3,z11,z12,z21,z22,z31,z32]=control_Niuben(t,x)
%% 三个系统的自定义状态
x11=x(1); 
x12=x(2);
x21=x(3); 
x22=x(4);
x31=x(5); 
x32=x(6);

theta1_hat=x(7);
nu1_hat=x(8);
epsilon1_hat=x(9);
M11_hat=x(10);
s11=x(11);

theta2_hat=x(12);
nu2_hat=x(13);
epsilon2_hat=x(14);
M21_hat=x(15);
s21=x(16);

theta3_hat=x(17);
nu3_hat=x(18);
epsilon3_hat=x(19);
M31_hat=x(20);
s31=x(21);
%% 三个系统的参数
omega1=10*exp(-2*t); 
omega2=10*exp(-2*t); 
omega3=10*exp(-2*t);

sigma1=10*exp(-2*t); 
sigma2=10*exp(-2*t); 
sigma3=10*exp(-2*t);

beta11=5; 
beta21=5; 
beta31=5;

gamma11=1000; 
gamma12=10; 
gamma13=10; 
gamma21=1000;
gamma22=10;
gamma23=10; 
gamma31=1000;
gamma32=10; 
gamma33=10;

eta11=1; 
eta12=1; 
eta21=1; 
eta22=1;
eta31=1; 
eta32=1;

k11=100; 
k12=100;
k21=100; 
k22=100;
k31=100; 
k32=100;

tau11=100; 
tau21=100; 
tau31=100;                                           %滤波时间常数

phi11=[x11,0.5*x11]'; 
phi12=[x11,x12]';
phi21=[0.1*x21,x21]'; 
phi22=[x22,0.3*x21]';
phi31=[x31,0.2*x31]'; 
phi32=[0.1*x32,0.2*x32]';

h11=0.1*x11*sin(x21)*cos(x32);   
h12=0.1*x22*sin(x31)*cos(x11);
h21=0.3*x31*sin(x12)*cos(x21);   
h22=0.1*x22*sin(x11)*exp(-x31);
h31=0.3*x31*sin(x22)*exp(x11);   
h32=0.2*x32*sin(x11)*exp(-x21);

d11=0.01*sin(3*t);   
d12=0.01*sin(3*t);
d21=0.01*sin(2*t);  
d22=0.01*sin(2*t);
d31=0.01*sin(2*t);   
d32=0.01*sin(2*t);
d1=0.01*sin(3*t); 
d2=0.01*sin(2*t);
d3=0.01*sin(2*t);

theta1=[0.1+0.02*sin(t),0.2+0.01*sin(t)]';
theta2=[0.05+0.01*sin(2*t),0.06+0.02*cos(t)]';
theta3=[0.2+0.01*sin(2*t),0.2+0.01*cos(3*t)]';


%% 参考信号
yr1=cos(7*t);
yr1_d=-7*sin(7*t);
yr2=2*sin(t);
yr2_d=2*cos(t);
yr3=1.5*cos(6*t);
yr3_d=-9*sin(6*t);

%% 第一个系统 
rule=linspace(-10,10,5);                                                  
S11=calS(x11',rule);
% 11
z11=x11-yr1;
alpha11=-k11*z11-sign(z11)*theta1_hat'*phi11-(tanh(z11/omega1))*nu1_hat*norm(S11)^2/(2*eta11)...
        -tanh(z11/omega1)*eta11-tanh(z11/omega1)*d1-tanh(z11/omega1)*epsilon1_hat+yr1_d;
e11=s11-alpha11;
% 12
z12=x12-s11;
S12=calS(x12',rule);
u1=-k12*z12-sign(z12)*theta1_hat'*[phi11,phi12]'-(tanh(z12/omega1))*nu1_hat*norm(S12)^2/(2*eta12)...
   -tanh(z12/omega1)*eta12-tanh(z12/omega1)*d1-tanh(z12/omega1)*epsilon1_hat-e11/tau11-2*z11-(M11_hat^2*e11)/sqrt(M11_hat^2*e11+sigma1^2);

%% 第二个系统 
rule=linspace(-10,10,5);                                                  
S21=calS(x21',rule);
% 21
z21=x21-yr2;
alpha21=-k21*z21-sign(z21)*theta2_hat'*phi21-(tanh(z21/omega2))*nu2_hat*norm(S21)^2/(2*eta21)...
        -tanh(z21/omega2)*eta21-tanh(z21/omega2)*d2-tanh(z21/omega2)*epsilon2_hat+yr2_d;
e21=s21-alpha21;
% 22
z22=x22-s21;
S22=calS(x22',rule);
u2=-k22*z22-sign(z22)*theta2_hat'*[phi21,phi22]'-(tanh(z22/omega2))*nu2_hat*norm(S22)^2/(2*eta22)...
   -tanh(z22/omega2)*eta22-tanh(z22/omega2)*d2-tanh(z22/omega2)*epsilon2_hat-e21/tau21-2*z21-(M21_hat^2*e21)/sqrt(M21_hat^2*e21+sigma2^2);

%% 第三个系统 
rule=linspace(-10,10,5);                                                  
S31=calS(x31',rule);
% 31
z31=x31-yr3;
alpha31=-k31*z31-sign(z31)*theta3_hat'*phi31-(tanh(z31/omega3))*nu3_hat*norm(S31)^2/(2*eta31)...
        -tanh(z31/omega3)*eta31-tanh(z31/omega3)*d3-tanh(z31/omega3)*epsilon3_hat+yr3_d;
e31=s31-alpha31;
% 32
z32=x32-s31;
S32=calS(x32',rule);    
u3=-k32*z32-sign(z32)*theta3_hat'*[phi31,phi32]'-(tanh(z32/omega3))*nu3_hat*norm(S32)^2/(2*eta32)...
   -tanh(z32/omega3)*eta32-tanh(z32/omega3)*d3-tanh(z32/omega3)*epsilon3_hat-e31/tau31-2*z31-(M31_hat^2*e31)/sqrt(M31_hat^2*e31+sigma3^2);

%% 自适应律(分系统写的)
% 1
Xi12_epsilon=gamma12*z11*tanh(z11/omega1)+gamma12*z12*tanh(z12/omega1);
epsilon1_hat_d=Xi12_epsilon-gamma12*omega1*epsilon1_hat;
Xi12_nu=gamma13*z11*(tanh(z11/omega1))/(2*eta11*norm(S11))+gamma13*z12*(tanh(z12/omega1))/(2*eta12*norm(S12));
nu1_hat_d=Xi12_nu-gamma13*omega1*nu1_hat;
theta1_hat_d=gamma11*abs(z11)*phi11+gamma12*abs(z12)*[phi11,phi12]'-gamma11*omega1*theta1_hat;
M11_hat_d=beta11*abs(e11);
% 2
Xi22_epsilon=gamma22*z11*tanh(z21/omega2)+gamma12*z22*tanh(z12/omega2);
epsilon2_hat_d=Xi22_epsilon-gamma22*omega2*epsilon2_hat;
Xi22_nu=gamma23*z21*(tanh(z21/omega2))/(2*eta21*norm(S21))+gamma13*z22*(tanh(z22/omega2))/(2*eta22*norm(S22));
nu2_hat_d=Xi22_nu-gamma23*omega2*nu2_hat;
theta2_hat_d=gamma21*abs(z21)*phi21+gamma22*abs(z22)*[phi21,phi22]'-gamma21*omega2*theta2_hat;
M21_hat_d=beta21*abs(e21);
% 3
Xi32_epsilon=gamma32*z31*tanh(z31/omega3)+gamma12*z32*tanh(z32/omega3);
epsilon3_hat_d=Xi32_epsilon-gamma32*omega3*epsilon3_hat;
Xi32_nu=gamma33*z31*(tanh(z31/omega3))/(2*eta31*norm(S31))+gamma33*z32*(tanh(z32/omega3))/(2*eta32*norm(S32));
nu3_hat_d=Xi32_nu-gamma33*omega3*nu3_hat;
theta3_hat_d=gamma31*abs(z31)*phi31+gamma32*abs(z32)*[phi31,phi32]'-gamma31*omega3*theta3_hat;
M31_hat_d=beta31*abs(e31);

%% 三个系统
x11_d=x12+theta1'*phi11+h11+d11;
x12_d=u1+theta1'*phi12+h12+d12;
x21_d=x22+theta2'*phi21+h21+d21;
x22_d=u2+theta2'*phi22+h22+d22;
x31_d=x32+theta3'*phi31+h31+d31;
x32_d=u3+theta3'*phi32+h32+d32;
s11_d=-e11/tau11-(M11_hat^2*e11)/sqrt(M11_hat^2*e11+sigma1^2)-z11;
s21_d=-e21/tau21-(M21_hat^2*e21)/sqrt(M21_hat^2*e21+sigma2^2)-z21;
s31_d=-e31/tau31-(M31_hat^2*e31)/sqrt(M31_hat^2*e31+sigma3^2)-z31;

dx=[x11_d;x12_d;x21_d;x22_d;x31_d;x32_d;s11_d;s21_d;s31_d;epsilon1_hat_d;nu1_hat_d;theta1_hat_d;M11_hat_d;epsilon2_hat_d;nu2_hat_d;theta2_hat_d;M21_hat_d;epsilon3_hat_d;nu3_hat_d;theta3_hat_d;M31_hat_d];

function S_Z=calS(Z,Rule)
t_i=repmat(Z,1,length(Rule))-repmat(Rule,length(Z),1);                     
t=(exp(-sum(t_i.*t_i,1)/4))';
S_Z=t/sum(t);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值