【发布时间】:2012-10-01 04:58:44
【问题描述】:
在以下说明错误的简化示例中,函数f_what(..) 应返回数组ts 中索引处的输入参数y 的值:
function Y = f_what(y, ts)
function get_out = get(t)
get_out = y(t);
end
Y = arrayfun(get, ts);
end
调用它:
>> f_what(1:10, 1:5)
Error using f_what/get (line 4)
Not enough input arguments.
Error in f_what (line 7)
Y = arrayfun(get, ts);
此外,由于某种原因,get(..) 应与上述相同的以下内容有效:
function Y = f_what(y, ts)
get = @(t) y(t);
Y = arrayfun(get, ts);
end
调用它:
>> f_what(1:10, 1:5)
ans =
1 2 3 4 5
“没有足够的输入参数” ...arrayfun(..) 应该用一个参数调用它的第一个参数,在这种情况下,一个参数。 get(..) 有一个输入参数。我不明白为什么它还不够。
编辑:更简单:
function Y = f_what
function get_out = get_(t)
get_out = t;
end
Y = arrayfun(get_, 1:5);
end
还是同样的错误。
编辑 2: 如果我将 @get 提供给 arrayfun(..) 的第一个参数,而不是 get,它会起作用。但我仍然不明白为什么没有@ 就不能工作。
【问题讨论】:
标签: matlab