如何获得y
的长度?
>> s=10; r=28; b=8/3;
>> f = @(t,y) [-s*y(1)+s*y(2); -y(1)*y(3)+r*y(1)-y(2); y(1)*y(2)-b*y(3)];
在上面的示例中,长度为3
。此外,由于t
是唯一的自变量,y
的长度可以通过函数f
的长度找到,即此处为4
。
修改
我想写一个像ode45()
函数这样的微分方程求解器系统。这是一个例子
[t y] = ode45(f,[0 1],[1 0 0]);
答案 0 :(得分:1)
我还是不完全明白。但是从我做的小事做起,你想要看看函数f中的接缝,并寻找y(1),y(2)或y(3)以查看y有多少元素?如果是这种情况,您可以按如下方式进行:
f = @(t,y) [-s*y(1)+s*y(2); -y(1)*y(3)+r*y(1)-y(2); y(1)*y(2)-b*y(3)];
matchStr = regexp(func2str(f),'y\(\d\)','match');
numel(unique(matchStr))
这给出了:3
基本上是把f变成字符串,然后在这个字符串中搜索y(\d)
。
如果你想拥有匿名函数输入参数的数量,你可以使用:
nargin(f)
这给出:2(因为你有t和y作为f的输入)