Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何获取匿名函数输入参数的数量_Matlab_Anonymous Function - Fatal编程技术网

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

Matlab 如何获取匿名函数输入参数的数量,matlab,anonymous-function,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]); 我还是不完全明白。但

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

我还是不完全明白。但是从我所做的这一点来看,你想看看函数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的输入)

不要低估。“匿名函数输入参数的数量”。f有两个输入参数,t和y。你是怎么得到3或4的呢?
y
本身就是一个由3个参数组成的数组
y(1)
y(2)
y(3)
。使用numel(y)或size(y)。最终目标是什么?如果
f
的定义取决于
y
的长度,您应该创建一个单独的函数文件,因为这样创建一个内联函数通常不允许您处理这些类型的复杂性。在命令窗口中键入
edit ode45
edit private/odearguments
ode45
通过基于初始条件向量的大小进行假设,并在确定初始步长的同时实际评估积分函数来实现这一点。如果发生错误,它们要么被捕获,要么是用户的问题。请注意,虽然有时我们认为数组是带有“参数”的函数,但更清楚的是,它们有“元素”。我不确定您为什么需要从集成函数中了解这些信息。谢谢。您的答案是正确的,但是如果用户使用
x
而不是
y
,那么它看起来并不漂亮,也不起作用。我不认为Matlab在微分方程的函数中使用这一点,比如
ode45()
。应该有更好的方法。那么为什么不检查一下ode45是如何做到这一点的呢?只需编辑ode45,您就会看到源代码。也许这会提供一些答案。@user96402如果您不确定是否将被调用为
y
,则只需检查
(\d)
,而不使用
y
,或者您可以在构建正则表达式之前先检查输入参数的名称。