if P_deta > 2*Pu_sv if P_fdb < abs(P_deta) - Pd P_fdb_o = P_fdb + P_w0; else P_fdb_o = P_fdb + Pc_fix + P_w0; end else if P_fdb < Pu P_fdb_o = P_fdb + P_w0; else P_fdb_o = P_fdb + 2*(Pu_sv - Pu) + Pc_sv; end end
时间: 2023-02-19 13:23:43 浏览: 88
如果P_deta > 2 * Pu_sv,那么P_fdb_o = P_fdb * P_w0;如果P_fdb < abs(P_deta) - Pd,那么P_fdb_o = P_fdb * Pc_fix * P_w0;否则,如果P_fdb < Pu,那么P_fdb_o = P_fdb * P_w0;否则,P_fdb_o = P_fdb * 2 *(Pu_sv - Pu)* Pc_sv。
相关问题
%%%%%%%%%%%%%%%%%%controller uc(k)=h_co_0+h_cv_0*x_0(2)+h_ca_0*x_0(2)*x_0(2)+(h_rbfc_0)'*h(:,k)-h_kesi0_0*mm(k)+h_m_0*(ddxd(k)-lambda1_0*e(2,k)-lambda2_0*e(1,k)); v(k)=uc(k)-ks*ss(k)-z1*z2*mm(k)-h_o_0*mm(k)*v_max-aa*xx_0; if v(k)>=v_max u(k)=v_max; elseif v(k)<=v_min u(k)=v_min; elseif v(k)>v_min && v(k)<v_max u(k)=v(k); end deta_u(k)=u(k)-v(k); mmm(k)=aa*xx_0-deta_u(k); nnn(k)=(m-h_m_0)/h_m_0; %%%%%%%%%%%%%%%%%%%%%%%%%%%external disturbance
这段代码是控制器部分,用于计算控制输入 u。首先,根据实际状态和神经网络权重等参数,计算出控制器的输出 uc。然后,通过将 uc 减去一些项,如 ks*ss(k)、z1*z2*mm(k)、h_o_0*mm(k)*v_max、aa*xx_0 等,得到控制输入 v。接着,根据 v 的值,判断 u 的取值范围,如果 v 大于等于 v_max,则 u 取 v_max;如果 v 小于等于 v_min,则 u 取 v_min;否则 u 取 v。最后,计算出控制输入 u 与之前状态的差值 deta_u,以及 mmm 和 nnn,这些变量将用于后续计算中。
解释这段matlab代码的含义:um=1000; if u > um if deta > 0 alpha = 0; else alpha = 1; end elseif u < -um if deta > 0 alpha = 1; else alpha = 0; end else alpha = 1; end
这段 Matlab 代码是一个条件语句,根据给定的条件决定变量 alpha 的值。变量 um 被赋值为 1000,变量 u 和 deta 的值没有给出,应该在代码其他地方定义了。下面是几种情况根据变量 u 和 deta 的值决定变量 alpha 的值:
- 当 u > 1000 时,如果 deta > 0,alpha 的值为 0,否则为 1。
- 当 u < -1000 时,如果 deta > 0,alpha 的值为 1,否则为 0。
- 当 -1000 <= u <= 1000 时,alpha 的值为 1。
这个条件语句的作用是根据不同的输入值对变量 alpha 进行赋值。
阅读全文