【发布时间】:2010-11-02 06:15:39
【问题描述】:
我有点惊讶 MATLAB 没有 Map 函数,所以我自己拼凑了一个,因为我离不开它。那里有更好的版本吗?是否有一个我缺少的用于 MATLAB 的标准函数式编程库?
function results = map(f,list)
% why doesn't MATLAB have a Map function?
results = zeros(1,length(list));
for k = 1:length(list)
results(1,k) = f(list(k));
end
end
用法例如
map( @(x)x^2,1:10)
【问题讨论】:
-
从其他语言到 Matlab 的第 1 课:不要使用 for 循环,它们比矢量化解决方案慢几个数量级。
-
随着 JIT 的引入,for 循环不再像以前那样受到惩罚。
-
@CookieOfFortune 我认为这不再是真的......
-
@AnderBiguri 我认为他们已经添加了一些改进,但仍然慢得多。
-
File Exchange 上的Functional Library 有
map、foldl(也称为reduce)、select(又名filter)和其他不可或缺的好东西。推荐(如果您必须使用 Matlab)。
标签: matlab functional-programming map-function