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

[dennou-ruby:000877] Re: numfft



From: Kazuto Takahashi <kazto@xxxxxx>
Subject: [dennou-ruby:000876] Re: numfft
Date: Tue, 25 Sep 2001 17:05:06 +0900

> まず一つ目は、NumArray のサポートは止めますが、
> NumComplex はそのまま継続でサポートしますか?

NArray に含まれるのでいらないと思います。

個人的には complex.rb 相当と NArray の Complex 相当の複素数
は組み込みで欲しいくらいなので、せめて require 'num' とか
require 'numru' とかで使えるようにはなって欲しいですね。

例えば、以下のような numru.rb というのを電脳で管理したら良い
と思います。

  require 'numru/narray'
  require 'numru/dcl'
  require 'numru/numfft'
  require 'numru/gsl'
  ....

つまり、数値計算をしたかったらとりあえず require 'numru' し
とけ、という感じ。ここで require 'num' にしてよいかどうかが
なやみどころではあります。numru ならぶつかんないかなっと。

# こないだ非常に久しぶりに TeX を素手でインストールをして 
# tetex に感動したんですが、ああいうお手軽パッケージが Ruby 
# の数値計算方面にも欲しいですね。いまはNASAの田中さんがほぼ
# 一人で頑張ってますけど。

> 二つ目の質問です。

> 例えば、
>         na = NArray.new(Float,5,4,3)
> として、
>         na.rfft(0)
> とした時、長さ5の一次元配列を4*3=12回、fft するわけですよね。

え、そうなの? n次元配列のFFTはn次元的にやって欲しい場合も少
なくないと思うんですが。でも、それはもはやFFTとはいわないか…
でも堀之内さんが欲しいっていうんだから業界的には必要なんでしょ
うか。

> この時は、長さ5の fft された配列が12本、5*4*3の空間に収まりますが、
> 複数の次元に fft したいときは、もうこれ以上スペースが無いわけですから、
> 配列の形を新しく設定しなければならない。
> そこで、
>         na.rfft
> の出力の多次元配列の形は、
>         na[ 5,4,3,3 ]
> 一般的に書くと、
>         na[ shape[0] , shape[1] , ... , shape[rank-1] , rank ]
> のように、最後にもう一つ次元を追加して、
> na の n 次元目に fft かました結果が na[x,x, ... ,n] に格納される、
> という形式に使用と考えてますが、これでよいでしょうか?

僕は逆(先頭につく)のが良いような気がします。ループの効率でも。

> また、上記のような方法をとった場合、
>         na.rfft(0,2)
> のように全ての次元には fft しない時に、
> 出力結果の na[x,x,x,1] には、
> 
> ・すべてゼロを入れる。
> ・fft してない na を入れる。
> ・最後の次元の shape は、fft した次元の個数だけにする。
>   (上の例だと、shape[3]=2 )

最後のやつに賛成です。

-- Gotoken