试图访问y (5);索引越界因为元素个数(y) = 2。

6视图(30天)
我得到这个消息当我尝试运行代码。我的新项目。我不知道该做什么
我的代码是在
函数(dy, ay_NL beta_NL rss_NL] = derivNL (t, y,缺点)
%的常量
y = 0 (2, 1);
一个= cons.a;%纵向距离齿轮前轮[m]
b = cons.b;%纵向距离齿轮后轮[m]
C_alpha_f = cons.c_alpha_f;% (N / rad)猜/过弯刚度前轮
C_alpha_r = cons.c_alpha_r;% (N / rad)猜/过弯刚度后轮
I_zz = cons.I_zz;%偏航惯性质量近似
M = cons.M;% 1688公斤,80公斤的人,79升燃料,20公斤石油u = cons.u;% Vihecle logditudinal速度(米/秒)
w_r = cons.w_r;
w_f = cons.w_f;
L = cons.L;
g = cons.g;
我= cons.my;N_f = cons.N_f;N_r = cons.N_r;
%转向角为0.2 g归根结底
delta_f = 0.00395 * 3;%计算分析
%的输入
alpha_f = ((y (2) + * y (1)) / u) -delta_f;%滑脱角前
alpha_r = (((2) - b * y (1)) / u);%滑天使后
F_yf_NL = NLtire (2 * C_alpha_f alpha_f,我N_f);%侧向力前轮[N]
F_yr_NL = NLtire (2 * C_alpha_r alpha_r,我N_r);%侧向力后轮[N]
%偏航率和横向速度
dy (1) = (1 / I_zz) * (F_yf_NL * a-F_yr_NL * b);%偏航速度(度/秒)
dy (2) = ((1 / M) * (F_yf_NL + F_yr_NL)) - u * y (1);%横向速度(米/秒)
dy (3) = (u * cos (y (5)))——(y (2) * sin (y (5)));全球汽车coordinat X-direc %
dy (4) = (u * sin (y (5))) + (y (2) * cos (y (5)));全球汽车coordinat Y-direc %
dy (5) = y (1);%旋转角ψ

答案(3)

茱莉亚
茱莉亚 2014年9月12日
你好,
既然你宣布y zeros-vector,覆盖你的输入y。
向量y只有2项。
> > y = 0 (2, 1)
y =
0
0
但你尝试访问y(5)计算。

米金
米金 2014年9月12日
编辑:米金 2014年9月12日
Jeppe,如果我没弄错的话, derivNL 定义了一个微分方程组。如果是这样的话,改变
y = 0 (2, 1);
dy = 0 (5、1);
y 代表了初始条件状态向量(不应重置为零)。 dy 状态向量的导数。
确保调用函数与一个初条件适当大小的状态向量,5-by-1。

Rushikesh四氨基二苯醚
Rushikesh四氨基二苯醚 2014年9月12日
这是因为你有声明为:
y = 0 (2, 1);
创建y变量为:
y = (0, 0)
这意味着y变量只有2元素,您可以访问这些元素y y(1)和(2)以上。
现在在接下来的行
dy (3) = (u * cos (y (5)))——(y (2) * sin (y (5)));全球汽车coordinat X-direc %
dy (4) = (u * sin (y (5))) + (y (2) * cos (y (5)));全球汽车coordinat Y-direc %
您试图访问第五元素使用y(5)不存在,导致错误。
我也发现你试图从调用函数y作为输入在这种情况下y = 0 (2, 1) y的值将覆盖从调用函数。

类别

找到更多的在历史竞赛帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!