1

関数を使用してmatlabで作業していcumsumます。ここで、配列の累積値が数値に最も近い位置にいつ到達するかを知りたいと思います。例えば;

willcumsum(week1(1,13:17))が 800 に最も近い位置に到達したとき。

week 1 13:17 = 200 200 200 400 900
cumsum(week1(1,13:17))= 400 600 1000 1900 

では、最も近い位置が 15 であることをどのように確認できますか?

お時間をいただきありがとうございます。

4

2 に答える 2

0

特定の値までの距離が最小の場所を見つけることは、次のように簡単です。

w = [200 200 200 400 900];
cw = cumsum(w);

[v, loc] = min(abs(cw-600))

この例では要素 13 以降のみが含まれloc+12ているため、この場合に関心があることに注意してください。w

于 2014-04-29T13:10:40.473 に答える
0

このことから明らかです。13 では 400、14 では 600、15 では 1000 でした。これで、cumsum(array)>800 の場合、break;またインデックスを保存してください。そして、あなたはそれを簡単に見つけることができます:編集済み:

>> A=[200 200 200 400 900];
>> sum=cumsum(A);
>> i=1;
while sum(i)<=800
  i=i+1;
   if sum(i)>800
   i=i-1;
end
end

>> i

i =

     3

今、あなたは持っています

13:17

ans =

    13    14    15    16    17

簡単に判断できます

于 2014-04-17T09:41:21.520 に答える