matlab到R:函数调用和@
我使用matlab到R:函数调用和@,r,matlab,function,porting,R,Matlab,Function,Porting,我使用R,但我正在将matlab中的代码翻译成R。我已经到了一个我无法摸索的地方 我的研究表明,@允许您使用固定变量以另一个名称调用函数,例如 g = @(b) f(a1, b, c1) 允许我调用f仅通过执行g(b) 在我正在使用的代码中有一个函数 function dN = WW(N,h,A,P,aA,aP,bA,bP) 在代码中的某个点,它显示为WW被调用,但使用 f = @(t,N) WW(N,h,A,P,aA,aP,bA,bP) f = @(t,N) WW(N,h,A,P,aA,
R
,但我正在将matlab中的代码翻译成R
。我已经到了一个我无法摸索的地方
我的研究表明,@
允许您使用固定变量以另一个名称调用函数,例如
g = @(b) f(a1, b, c1)
允许我调用f
仅通过执行g(b)
在我正在使用的代码中有一个函数
function dN = WW(N,h,A,P,aA,aP,bA,bP)
在代码中的某个点,它显示为WW
被调用,但使用
f = @(t,N) WW(N,h,A,P,aA,aP,bA,bP)
f = @(t,N) WW(N,h,A,P,aA,aP,bA,bP)
我之所以如此困惑,是因为t,N
在代码中没有提到其他内容……但是h,A,p,aA,aP,bA,bP都是在前面定义的
有人认识到这种结构以及可能发生的情况吗?您对@
的评估是正确的@(t)
就是我们所知道的@(t)
将因此向接受一个变量t
的函数返回句柄。基本上,它是一个包含一个参数的函数,t
。其余参数先前在工作区中定义
例如,您的g=@(b)f(a1,b,c1)
语句允许您将此函数调用封装到另一个名为g
的函数中,而a1
和c1
是先前在您的工作区中定义的。因此,此函数将依赖于进入函数的一个变量,即b
。因此,当您调用函数g
时,这些参数将保持静态,您可以动态更改b
。换句话说,每次调用g
,a1
和c1
将始终保持不变,而b
将根据您放入g
中的内容而变化(签出)。显然,如果工作区中的a1
和c1
发生了变化,那么下次调用g
时也会反映出这种行为
现在,使用另一个函数调用t
从未使用过,但N
使用过!同样地,N
在您改变它时将动态地改变,但是t
对f
的函数句柄没有影响。无论您如何更改t
,只要您不更改N
,则f
的输出将是相同的
无论如何,您的评估确实是正确的。您对@
的评估是正确的@(t)
就是我们所知道的@(t)
将因此向接受一个变量t
的函数返回句柄。基本上,它是一个包含一个参数的函数,t
。其余参数先前在工作区中定义
例如,您的g=@(b)f(a1,b,c1)
语句允许您将此函数调用封装到另一个名为g
的函数中,而a1
和c1
是先前在您的工作区中定义的。因此,此函数将依赖于进入函数的一个变量,即b
。因此,当您调用函数g
时,这些参数将保持静态,您可以动态更改b
。换句话说,每次调用g
,a1
和c1
将始终保持不变,而b
将根据您放入g
中的内容而变化(签出)。显然,如果工作区中的a1
和c1
发生了变化,那么下次调用g
时也会反映出这种行为
现在,使用另一个函数调用t
从未使用过,但N
使用过!同样地,N
在您改变它时将动态地改变,但是t
对f
的函数句柄没有影响。无论您如何更改t
,只要您不更改N
,则f
的输出将是相同的
无论如何,你的评估确实是正确的
在代码中的某个点上,它出现了
function dN = WW(N,h,A,P,aA,aP,bA,bP)
被称为,但被称为与
f = @(t,N) WW(N,h,A,P,aA,aP,bA,bP)
f = @(t,N) WW(N,h,A,P,aA,aP,bA,bP)
我之所以如此困惑,是因为t,N
在这本书中没有提到
代码…但是h、A、P、aA、aP、bA、bP都是在前面定义的
那完全可以。这里发生的是如果你这样做
f(value_for_t, value_for_N)
它叫
WW(value_for_N,h,A,P,aA,aP,bA,bP)
(oops?t
未使用…)
因此,包含t
或N
的所有内容都被替换或消失
在代码中的某个点上,它出现了
function dN = WW(N,h,A,P,aA,aP,bA,bP)
被称为,但被称为与
f = @(t,N) WW(N,h,A,P,aA,aP,bA,bP)
f = @(t,N) WW(N,h,A,P,aA,aP,bA,bP)
我之所以如此困惑,是因为t,N
在这本书中没有提到
代码…但是h、A、P、aA、aP、bA、bP都是在前面定义的
那完全可以。这里发生的是如果你这样做
f(value_for_t, value_for_N)
它叫
WW(value_for_N,h,A,P,aA,aP,bA,bP)
(oops?t
未使用…)
因此,包含t
或N
的所有内容都被替换或消失。这些都是“匿名函数”。@(t,N)
部分中的变量是仅在匿名函数体范围内的函数参数。请看这些是“匿名函数”。@(t,N)
部分中的变量是仅在匿名函数体范围内的函数参数。见卫生部。我没有看到那里的N
。我更正了我的帖子。谢谢你的洞察力:)啊。我没有看到那里的N
。我更正了我的帖子。感谢您的洞察力:)