我试图定义:
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
在函数定义时为 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
关于matlab - 如何在匿名函数中使用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22215571/