%%%%%%%%%%%%%%%%%%%%%% 本程序的目的是设计控制器u,确保变量x能够很好地跟踪期望位移xr和期望速度dxr clc; clear all; k2=2; %%%%%%%%%%%%%% 经验值,个人根据经验值自己设定 %%%%%%%%%%%%%%%%%% 仿真步长、采样间隔 ts=0.1; TT=40; iter=TT/ts; % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 参考位移、速度、加速度 % xr=zeros(1,iter); % dxr=zeros(1,iter); % ddxr=zeros(1,iter); % x=zeros(2,iter); %%%%%%%%%%%%%%%% 定义变量x为3维 x_0=[0;0;0]; x_1=[-1000;0;0]; x_2=[-2000;0;0]; %%%%%%%%%%%%%%%% 变量x的初值 % % % u=zeros(1,iter); %%%%%%%%%%%%%%%% 控制器 % %% 参数 L=1000; %%%%安全距离 g=9.8; h_0=200; j_0=80; m0=500000; a0=1; b0=0.3; c0=0.05; l0 = randi([0, 2000],1); R= randi([300,1000]); lambda = 0.01; % 指数分布的参数,可以根据需要调整 R = round(max(300, exprnd(1/lambda))); % 生成符合指数分布的随机数,并将其四舍五入为整数,同时限制其最小值为300 p = 0.8; % 0出现的概率为0.5,可以根据需要调整 l0 = binornd(1, p)*(randi([0, 200]) + 1); % 生成符合二项分布的随机数,如果随机数为0,则将其设置为1,然后再乘以一个随机数,在0到200之间变化 aerfa0=0.000001; w0_max=2500000; w0_min=-2500000; angle0=rand*pi/180; U0=10^7; E0=10^5; beta0=6; q0=77; p0=79; time=zeros(1,iter); for k=1:iter time(k)=k*ts; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 参考位移、速度、加速度 time_points=0:TT/40:TT; velocity_points=[0, 6, 12, 17, 22, 27, 32, 37, 41, 45,... 48, 51, 54, 57, 60, 62.5, 62.5, 62.5, 62.5, 61.5,... 62.2, 62.4, 62.4, 62.5, 60, 57, 54, 51, 48, 47,... 45, 40, 35, 30, 28, 26, 24, 22, 19, 10, 0]; dxr(k)=interp1(time_points,velocity_points,time(k),'spline'); if k<2 xr(k)=0; ddxr(k)=0; else xr(k)=xr(k-1)+ts*dxr(k); ddxr(k)=(dxr(k)-dxr(k-1))/ts; end
时间: 2024-04-29 19:20:14 浏览: 191
java_RussiaBlock_1class.rar_russia%1java
这段代码的目的是设计控制器u,以确保变量x能够很好地跟踪期望位移xr和期望速度dxr。在程序中定义了一些参数和变量,如仿真步长、采样间隔、参考位移、速度、加速度、变量x的初值和控制器u等。程序中还使用了一些插值函数和数学计算函数,如interp1()函数和randi()函数等。在程序中,通过控制器u来控制变量x的变化,从而实现对期望位移和期望速度的跟踪。
阅读全文