ts=1; TT=2000; iter=TT/ts; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%参考位移、速度、加速度 xd=zeros(1,iter); dxd=zeros(1,iter); ddxd=zeros(1,iter); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%系统状态:实际位移和速度 x=zeros(2,iter); x_0=[5;0]; e=zeros(2,iter); lambda1=zeros(1,iter); lambda2=zeros(1,iter); mm=zeros(1,iter); xx=zeros(1,iter); ss=zeros(1,iter); %%%hat{s} s=zeros(1,iter); s1=zeros(1,iter); s1_0=0; u=zeros(1,iter); u1=zeros(1,iter); uc=zeros(1,iter); h=zeros(31,iter); dd1=zeros(1,iter); dd=zeros(1,iter); we=zeros(1,iter); time=zeros(1,iter); h_co=zeros(1,iter); %h_co_0=0; h_cv=zeros(1,iter); %h_cv_0=0; h_ca=zeros(1,iter); %h_ca_0=0; h_rbfc=zeros(31,iter); %h_rbfc_0=zeros(31,1); h_kesi0=zeros(1,iter); %h_kesi0_0=0; h_m=zeros(1,iter); %h_m_0=0; h_o=zeros(1,iter); %h_o_0=0; %E=rand(); E=0.8; for k=1:iter time(k)=kts; h_co_0=4200;h_cv_0=120;h_ca_0=0.9;h_rbfc_0=zeros(31,1);h_kesi0_0=0;h_m_0=1;h_o_0=0; 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]; dxd(k)=interp1(time_points,velocity_points,time(k),'spline'); xd(k)=sum(dxd(1:k)); if k<2 ddxd(k)=0; else ddxd(k)=(dxd(k)-dxd(k-1))/ts; end %%%%%%%%%%%%%%%%%%%%%%%%external disturbances(单位附加阻力) %%%%%%%%%%%%%%斜坡阻力 % wi=6rand(); wi=2; %%%%%%%%%%%%%%曲线阻力 a1=2/3pi;Lr=200; wr=10.5a1/Lr; %%%%%%%%%%%%%%隧道阻力 Ls=1000; ws=1.310^(-4)Ls; we(k)=0.08sin(0.2kts)cos(0.2kts); %%%%%%%%%%%%%%%%单位附加阻力 if k<100 dd1(k)=we(k)+wr; elseif 100<=k& k<250 dd1(k)=we(k)+ws; elseif 250<=k& k<600 dd1(k)=we(k)+ws; elseif 600<=k& k<1000 dd1(k)=we(k)+wr; else dd1(k)=we(k); end %%%%%%%%%%%%%%%%%%总阻力 dd(k)=dd1(k)mg/10^3; e(:,k)=[x_0(1)-xd(k);x_0(2)-dxd(k)];
时间: 2023-12-09 07:05:37 浏览: 38
这段代码是一个 Matlab 代码段,用于实现一个控制系统的模拟。具体来说,它定义了一些变量和数组,并使用了循环语句计算了这些变量和数组的值。其中,xd 表示参考位移,dxd 表示参考速度,ddxd 表示参考加速度,x 表示实际位移和速度,e 表示误差,dd 表示总阻力,we 表示单位附加阻力,等等。这段代码的目的是模拟控制系统对外部干扰的响应,以便优化控制系统的性能。
相关问题
% Initialize parameter updatemax_iter = 50; % Set maximum number of iterations
这段代码通常出现在迭代算法中,用于设置最大迭代次数。在迭代算法中,通常需要对某些参数进行更新,直到满足某种条件为止。这个过程可以重复进行多次,每次更新参数后都会重新计算模型或函数的性能指标。为了避免算法无限循环或者计算时间过长,需要设置一个最大迭代次数,以限制算法的运行时间。在这个例子中,最大迭代次数被设置为50,意味着算法最多可以迭代50次。
給date添加通配符,這個是查詢日期的格式為%Y/%m/%d
如果你想在日期列中使用通配符进行模糊查询,可以将日期格式化为字符串,然后添加通配符。以下是示例代码:
```
import datetime
# 获取所有查询条件
date = self.date_entry.get()
name = self.line_entry1.get()
name1 = self.line_entry2.get()
name2 = self.line_entry3.get()
# 将日期格式化为字符串并添加通配符
if date:
date_str = datetime.datetime.strptime(date, '%Y/%m/%d').strftime('%Y/%m/%d')
date = f'%{date_str}%'
# 在查询条件中添加通配符
name = f'%{name}%'
name1 = f'%{name1}%'
name2 = f'%{name2}%'
# 查询数据
ws = openpyxl.load_workbook(output_path2).active
rows = ws.iter_rows(min_row=1, values_only=True)
records = []
header = next(rows)
for row in rows:
if (not date or date in row[2].strftime('%Y/%m/%d')) and (not name or name in row[5]) and (not name1 or name1 in row[8]) and (not name2 or name2 in row[6]):
records.append(row)
```
在上面的代码中,我们首先将日期格式化为字符串,然后在字符串中添加通配符。在查询过程中,我们将日期列转换为字符串,并使用in运算符检查通配符是否出现在字符串中。注意,这种方法可能会影响查询性能,因此应该谨慎使用。