matlab - 如何在匿名函数中使用变量?

标签 matlab

我试图定义:

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/

相关文章:

matlab - 找到阴影检测的最大轮廓

matlab - 输入参数太多,即使使用 varargin

c - 解引用指向 MxArray 的指针

c++ - 将具有 OO 语法的 Matlab 转换为 c/c++ 而无需重写其功能

matlab - 修改x轴位置

regex - Matlab:正则表达式替换

python - 如何简化 Python 和 Matlab 中的 for 循环

matlab - 从均值、变异系数生成对数正态分布的随机数

c++ - 如何在运行时制作 mex 函数 printf?

c++ - 如何让 Matlab 使 mex session 保持事件状态