0

我不明白以下代码:

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

从上一个链接:

边界框 Matlab

4

1 回答 1

2

匿名函数是定义函数的一种简写方式。它接受输入参数 (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

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

因此,如果我们将一些测试输入传递给它,我们就可以看到它在起作用。

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

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

rect2rng(10, 5)
%// [10  11  12  13  14]
于 2016-04-09T19:07:25.647 回答