无法理解匿名函数

时间:2016-04-09 18:59:31

标签: matlab anonymous-function function-handle

我不明白以下代码:

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

来自上一个链接:

BoundingBox Matlab

1 个答案:

答案 0 :(得分:2)

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

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

因此,如果我们传递一些测试输入,我们就可以看到它的实际效果。

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

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

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