如何获取匿名函数输入参数的数量

时间:2014-12-11 06:37:24

标签: matlab anonymous-function

如何获得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]);

1 个答案:

答案 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的输入)