【发布时间】:2017-10-29 11:54:24
【问题描述】:
我知道 bsxfun(运行速度很快!)和 arrayfun(据我所知,在内部使用预期会很慢的循环)至少在最基本的层面上用于不同的用途。
说了这么多,我在努力
- 对给定数组中的所有数字求和,比如 y,在某个索引之前
- 将特定位置的数字(即上述索引位置的数字)添加到上述总和中。
我可以使用下面的示例代码轻松地执行此操作:
% index array
x = [ 1:6 ]; % value array
y = [ 3 3 4 4 1 1 ];
% arrayfun version
o2 = arrayfun(@(a) ...
sum(y(1:(a-1)))+...
y(a), ...
x)
但是在大输入时它似乎很慢。
我想知道如果可能的话,将它转换为与 bsxfun 一起使用的版本的好方法是什么。
附: y中的数字不重复上面给出的,这只是一个例子,也可以是[3 4 3 1 4 ...]
【问题讨论】:
-
你看
cumsum了吗?