[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:002499] Re: treatment of -inf



竹広です. 

> 堀之内です. 
> 
> > エネルギースペクトルを log スケールでプロットしたいんですが, 
> > エネルギーが 0 の点で ruby の算術関数 log10 が -inf を返して
> > しまい, その後の描画でそのあつかいに困ってしまいました. 
> > このような場合, どう処理するのが適切でしょうか. 
> > 
> > 例えば dcl の欠損値機能を用いて log10 が -inf を返すと欠損値を代入
> > しておいて描画作業する, なんてことは可能でしょうか? 
> > あるいはもっといい方法ありますでしょうか. 
> 
> 私なら、log 表示でゼロ付近の値が含まれることもある場合は、値域
> (あるは表示最小値だけ)を決めちゃいます。0 ピッタリじゃなくても、
> 突出して 0 に近い値がたまたま含まれる場合、自動スケーリングだと
> そこに引きずられて見辛い図になりますので。

説明不足でした. 座標軸を log スケールでグラフを表示するならば
それで可能な気がします. しかし, 今やりたいことはエネルギースペクトルの
2 次元表示なので, log をとった変数を一度作成してから等値線を描く, 
という手順になります. その場合, log を計算した後の変数の値として
-inf が格納されるためにうまくいかないんだと思うんですが. 

2 次元等値線を log スケール間隔で引く機能は DCL にはありませんよね. 

> ちなみに -inf の処理はできます。例えばこう
> 
> require "narray"
> na = NMath::log10( NArray.float(3).indgen! )
> neg_inf = -1.0/0.0
> na[ na.eq(neg_inf) ] = -999.0
 
なるほど, これで試してみます.