[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:002499] Re: treatment of -inf
- To: dennou-ruby@xxxxxxxxxxx
- Subject: [dennou-ruby:002499] Re: treatment of -inf
- From: Shin-ichi Takehiro <takepiro@xxxxxxxxxxxxxx>
- Date: Fri, 11 Nov 2005 09:55:04 +0900
竹広です.
> 堀之内です.
>
> > エネルギースペクトルを 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
なるほど, これで試してみます.