[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:000828] Re: numfft
高橋(北大)さん
> netlib/fftpack のほうは恐らくそれ自体では多次元配列への対応があ
> りません。従って C レベルで呼び出すときにループを回して多次元対
> 応をさせることになります。そうすると最初から多次元を意識したフー
> リエ変換より計算効率はかなり落ちるでしょう。でも少々効率が悪くて
> もないよりは絶対にましです。
ホームページをみて、1次元対応しかないかと早合点してこう書いたの
ですが、ソースをみたら多次元に対応してましたね。失礼しました。引
数で次元を指定できて、しなければ全部という仕様は好ましいと思いま
す。こちら(SPARC Ultra Solaris 2.6 + gcc)では Segmentation Fault
が出てしまうのですが、恐らく NumArray のほうの問題です。現バージョ
ンは(いつからかわからないのですが)、Solaris で他にも同様な症状
を起こしてましたので。
ところでバグ(?)発見。dim<rank-1のとき、必要な回数の計算をしませ
んね。例えば2次元配列の1次元目に適用したら、2次元目の最初の要素
しか相手にしないように思います。それから、一般論として、引数には
まともな値が入って来ると仮定してはいけません。dim としてありえな
い値かどうかチェックして、駄目なら例外を発生してください。
NArray の fftw を見て頂ければ、高橋さんのでいう引数なしの場合し
か対応してないことがわかると思います。これを引数ありの場合にも対
応して頂きたいのです。引数の個数は1つでなくていいです。2次元目
と3次元目について fft するということを許容すべきです。なお、fftw
を使えば、高橋さんのコードで言えば
step=slide;
for(k=0 ; k<shape[dim] ; k++ ){
temp_ary[k]=ptr[step];
step += stride;
}
に相当する移し代えは一切要らないはずです。複数回の fft も一辺に
出来ます。
堀之内 武 horinout@xxxxxx
京都大学宙空電波科学研究センター 611-0011 宇治市五ヶ庄