我试图定义:
f = @(x) d*x
其中 d 是之前定义的变量,假设 d = 2。我的目标是让它返回:
@(x) 2*x
但是,MATLAB 返回:
@(x) d*x
我这样做的原因是在 for 循环中定义一系列函数句柄,例如
q = cell(n, 1);
for i = 1:n
q{i} = @(y) sum(y(1:i));
end
是否可以定义使用匿名函数定义中的索引的函数句柄数组?
这是正确的。当你定义f = @(x) d*x
matlab会寻找d
在本地范围内。自从d
was 2
在函数定义时,您的函数f
将有效地2*x
。即使您稍后更改 d 的值,例如d=10
,'f'函数仍然会使用2
.
这是一个例子:
d = 2;
f = @(x) d*x;
f(2) % gives 4;
d = 10;
f(2) % gives 4 again. matlab will 'remember' that d was 2 at the time of
% f function definition
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)