1

各日付の価格として列を持つ断面配列があります。30 日間のウィンドウのローリング サムで別の配列を作成したいと考えています。for ループを使用しないことをお勧めします。現在、1 つの列に次のコードを使用しています。

for i=31:n
 for j=i-30:i-1
  x = x + y(j)
 end
sum(i) = x
end

すべての証券に対してこれを行う必要があるため、データセット内のすべての要素に対してコードを複数回実行する必要があります。

4

4 に答える 4

2

の組み合わせをcumsum使おう!

data = 1:10;
n = length(data);
window = 3;
rollSum = cumsum(data)-[zeros(1,window), cumsum(data(1:n-window))];
rollSum =

 1     3     6     9    12    15    18    21    24    27

1=1
1+2=3
1+2+3=6
  2+3+4=9
    3+4+5=12
于 2013-10-01T13:52:14.027 に答える