我试图定义:
f = @(x) d*x
Run Code Online (Sandbox Code Playgroud)
其中d是先前定义的变量,比如d = 2.我的目标是让它返回:
@(x) 2*x
Run Code Online (Sandbox Code Playgroud)
但是,MATLAB返回:
@(x) d*x
Run Code Online (Sandbox Code Playgroud)
我这样做的原因是在for循环中定义一系列函数句柄,例如
q = cell(n, 1);
for i = 1:n
q{i} = @(y) sum(y(1:i));
end
Run Code Online (Sandbox Code Playgroud)
是否可以定义使用匿名函数定义中的索引的函数句柄数组?
这是正确的.当你定义f = @(x) d*xmatlab将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
Run Code Online (Sandbox Code Playgroud)