MATLAB コードの一部を IDL に変換するタスクを与えられましたが、MATLAB 関数 accumarry() に出くわしたときに障害にぶつかりました。ここで説明する関数は 、別の配列で指定されたインデックスに基づいて、ある配列の要素を合計するために使用されます。例 1 は、ページの上部にある実際の関数の説明よりも、おそらくこれをよりよく説明しています。例 1 を IDL で再現しようとしても、for ループを回避できませんでしたが、可能であると確信しています。私の最善の試みは次のとおりです。
vals = [101,102,103,104,105]
subs = [0,1,3,1,3]
n = max(subs)+1
accum = make_array(n)
for i = 0, n-1 do begin
wVals = where(subs eq i,count)
accum[i] = count eq 0 ? 0 : total(vals[wVals])
endfor
print,accum
; 101.000 206.000 0.00000 208.000
これを改善するためのアドバイスをいただければ幸いです。IDL にも同様の組み込み関数があると予想していましたが、追跡できませんでした。おそらく、ヒストグラムのビニングによる魔法でしょうか?