无法理解匿名函数

Trouble understanding an anonymous function

我不明白下面的代码:

rect2rng = @(pos,len)ceil(pos):(ceil(pos)+len-1);

从上一个link:

anonymous function 是定义函数的简写方式。它接受输入参数(poslen)并产生一个结果。

一般格式为:

func = @(input,arguments)some_action(input, arguments)

这将创建一个名为 func 的匿名函数,然后可以通过向其传递输入参数来使用(就像任何其他函数一样)

value1 = 1;
value2 = 2;
output = func(value1, value2)

上述示例的等价长格式函数为:

function output = func(input, arguments)
    output = some_action(input, arguments);
end

考虑到这一点,我们可以将您问题中的匿名函数分解为普通函数

function output = rect2rng(pos, len)
    output = ceil(pos):(ceil(pos) + len-1);
end

因此基于此,它使用 ceilpos 舍入到最接近的整数,然后创建一个长度为 len 的数组,以此舍入值开始。

因此,如果我们向它传递一些测试输入,我们就可以看到它的运行情况。

rect2rng(1.5, 3)
%// [2  3  4]

rect2rng(1, 3)
%// [1  2  3]

rect2rng(10, 5)
%// [10  11  12  13  14]