根据条件改变微分方程中的参数?

时间:2017-05-14 12:53:34

标签: matlab events ode differential-equations

我正在尝试根据位置条件改变移动机器人的输入轮速度?

if d > 0 & d < 0.4
        p.WR = 0.51;
        p.WL = 0.5;
    elseif d > 0.4 & d < 0.8 
        p.WR = 0.5;
        p.WL = 0.51;
    elseif d == 0.4
        p.WR = 0.5;
        p.WL = 0.5;
    end 
function dt = mydglw9(t,c,p)
     x = c(1);y = c(2);th = c(3);
      dx = (((p.r*p.WL)+(p.r*p.WR))/2) * cos(th);
      dy = (((p.r*p.WL)+(p.r*p.WR))/2) * sin(th);
      dth= ((p.r*p.WL)-(p.r*p.WR))/p.L;
      dt = [dx;dy;dth];
      pose = [x y th];
  end

然而我总是得到错误[引用不存在的字段'WL'],有没有办法让求解器在求解微分方程之前检查条件?

1 个答案:

答案 0 :(得分:0)

您可以检查来自WL结构的p字段是否与isfield一起存在:

isfield(p,'WL')
如果该字段存在,

返回true

相关问题