MATLAB 将变量与匿名函数一起存储。这是文档中的一个示例,说明了它是如何工作的。
表达式中的变量:
函数句柄不仅可以存储表达式,还可以存储表达式求值所需的变量。
例如,为需要系数 a、b 和 c 的匿名函数创建函数句柄。
a = 1.3; b = .2; c = 30; parabola = @(x) a*x.^2 + b*x + c;
因为 a、b 和 c 在您创建抛物线时可用,所以函数句柄包括这些值。即使您清除变量,这些值也会保留在函数句柄中:
clear a b c x = 1; y = parabola(x) y = 31.5000
假设 ab 和 c 的值与函数一起存储,即使它是从 mat 文件保存和重新加载的。在实践中,我发现这些值不会持续存在,尤其是在编辑最初创建函数的代码时。
有没有办法根据变量的数值定义函数句柄?我想要某种形式的东西
>> a = 1.3;
>> b = .2;
>> c = 30;
>> parabola = @(x) a*x.^2 + b*x + c
parabola = @(x) a*x.^2+b*x+c
>> parabola2 = forceEval(parabola)
parabola2 = @(x) 1.3*x.^2+.2x+30
编辑:也许我的问题出在文件关联上,但是当我编辑最初定义匿名函数的文件时,出现如下错误:
无法在 C: 中找到函数 @(ydata)nr/(na*dt)*normpdf(ydata,mu(j),s(j))./normpdf(ydata,mu_a(j),s_a(j))。 ..\m文件名.m。(我已将我的 mfile 的名称更改为 mfilename)
我通常对这类东西的解决方案是使用 func2str() 来删除文件依赖项,但这也会删除包括参数值在内的工作区信息。所以我想强制所有参数在函数定义中采用它们的数值。