Matlab ode45错误,索引超出范围,因为numel(x)=1

Matlab ode45错误,索引超出范围,因为numel(x)=1,matlab,ode,Matlab,Ode,这是我的脚本,我不明白为什么会出现这个错误 给参数传递的右侧为(t,x),其中t始终是标量。 所以你的函数签名应该是 function xx = test(x, t) xx(1) = x(2); xx(2) = x(3) * cos(x(4) + x(1)); xx(3) = 0; xx(4) = 0; end 给定给函数的右侧将参数传递为(t,x),其中t始终是标量。 所以你的函数签名应该是 function xx = test(x, t)

这是我的脚本,我不明白为什么会出现这个错误

给参数传递的右侧为
(t,x)
,其中
t
始终是标量。 所以你的函数签名应该是

    function xx = test(x, t)


   xx(1) = x(2);
   xx(2) = x(3) * cos(x(4) + x(1));
   xx(3) = 0;
   xx(4) = 0;

end

给定给函数的右侧将参数传递为
(t,x)
,其中
t
始终是标量。 所以你的函数签名应该是

    function xx = test(x, t)


   xx(1) = x(2);
   xx(2) = x(3) * cos(x(4) + x(1));
   xx(3) = 0;
   xx(4) = 0;

end

给定给函数的右侧将参数传递为
(t,x)
,其中
t
始终是标量。 所以你的函数签名应该是

    function xx = test(x, t)


   xx(1) = x(2);
   xx(2) = x(3) * cos(x(4) + x(1));
   xx(3) = 0;
   xx(4) = 0;

end

给定给函数的右侧将参数传递为
(t,x)
,其中
t
始终是标量。 所以你的函数签名应该是

    function xx = test(x, t)


   xx(1) = x(2);
   xx(2) = x(3) * cos(x(4) + x(1));
   xx(3) = 0;
   xx(4) = 0;

end

xx
是您的输出吗?你的意思可能是
xx(1)=x(2)等。。另外,最好预先分配
xx
xx
是您的输出吗?你的意思可能是
xx(1)=x(2)等。。另外,最好预先分配
xx
xx
是您的输出吗?你的意思可能是
xx(1)=x(2)等。。另外,最好预先分配
xx
xx
是您的输出吗?你的意思可能是
xx(1)=x(2)等。。另外,最好预先分配
xx
。这样做了,我从一个八度音阶改编了这个脚本,在这个八度音阶中,所有的东西都颠倒了,错过了那个八度音阶。非常感谢。如何使其返回列向量?@excelhelp您需要显式地分配它:
xx(4,1)=0
。然后,所有具有单个索引的引用都将引用列向量的行。将尝试一下,谢谢。谁知道从lsode到ode45会是一件很麻烦的事。就是这样,我把这个剧本改编成了一个八度音阶,在这个八度音阶里,所有的东西都颠倒了,错过了那个。非常感谢。如何使其返回列向量?@excelhelp您需要显式地分配它:
xx(4,1)=0
。然后,所有具有单个索引的引用都将引用列向量的行。将尝试一下,谢谢。谁知道从lsode到ode45会是一件很麻烦的事。就是这样,我把这个剧本改编成了一个八度音阶,在这个八度音阶里,所有的东西都颠倒了,错过了那个。非常感谢。如何使其返回列向量?@excelhelp您需要显式地分配它:
xx(4,1)=0
。然后,所有具有单个索引的引用都将引用列向量的行。将尝试一下,谢谢。谁知道从lsode到ode45会是一件很麻烦的事。就是这样,我把这个剧本改编成了一个八度音阶,在这个八度音阶里,所有的东西都颠倒了,错过了那个。非常感谢。如何使其返回列向量?@excelhelp您需要显式地分配它:
xx(4,1)=0
。然后,所有具有单个索引的引用都将引用列向量的行。将尝试一下,谢谢。谁知道从lsode到ode45会这么麻烦。