无法理解匿名函数
Trouble understanding an anonymous function
我不明白下面的代码:
rect2rng = @(pos,len)ceil(pos):(ceil(pos)+len-1);
从上一个link:
anonymous function 是定义函数的简写方式。它接受输入参数(pos
和 len
)并产生一个结果。
一般格式为:
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
因此基于此,它使用 ceil
将 pos
舍入到最接近的整数,然后创建一个长度为 len
的数组,以此舍入值开始。
因此,如果我们向它传递一些测试输入,我们就可以看到它的运行情况。
rect2rng(1.5, 3)
%// [2 3 4]
rect2rng(1, 3)
%// [1 2 3]
rect2rng(10, 5)
%// [10 11 12 13 14]
我不明白下面的代码:
rect2rng = @(pos,len)ceil(pos):(ceil(pos)+len-1);
从上一个link:
anonymous function 是定义函数的简写方式。它接受输入参数(pos
和 len
)并产生一个结果。
一般格式为:
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
因此基于此,它使用 ceil
将 pos
舍入到最接近的整数,然后创建一个长度为 len
的数组,以此舍入值开始。
因此,如果我们向它传递一些测试输入,我们就可以看到它的运行情况。
rect2rng(1.5, 3)
%// [2 3 4]
rect2rng(1, 3)
%// [1 2 3]
rect2rng(10, 5)
%// [10 11 12 13 14]