bsxfun(高速で動作します)とarrayfun(私が理解できる限り、ループは内部的には遅いと予想されています)は、少なくとも、最も基本的なレベル。arrayfun to bsxfun possible
これを言って、私は特定のインデックス
- をしようとしています上記のインデックス位置で)を合計します。
私は簡単にサンプルコードの下の部分でこれを行うことができます:
% 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で動作するバージョンに変換するにはどうすればよいのだろうかと思いました。
P.S. yの数字は上記のように繰り返されませんが、これは単なる例でした。[3 4 3 1 4 ...]
['cumsum'](https://www.mathworks.com/help/matlab/ref/cumsum.html)を見ましたか? – beaker