5.7.3 jfftpack

Paul N. Swarztrauber の FFTPACK は古くからあるライブラリィだが、 Java への移植 jfftpack (by Baoshe Zhang [email protected]) がある。

FFTPACK については、マニュアルの邦訳 「FFTPACK」 を用意してある。

卒研では、サンプル・プログラム testjfftpack-unix.tar.gz, testjfftpack-win.lzh を用意した。
knoppix$ tar xzf testjfftpack-unix.tar.gz
knoppix$ cd testjfftpack-unix
knoppix$ javac -cp jfftpack.jar testfft.java
knoppix$ java -cp jfftpack.jar:. testfft


   1 /*
   2  * testfft.java
   3  *   FFTPACK のJava版 jfftpack (http://www.netlib.org/fftpack/ で入手可)
   4  *   http://www.math.meiji.ac.jp/~mk/labo/2007/jfftpack.jar に載せる
   5  *
   6  *   jfftpack.jar の位置を環境変数 CLASSPATH で指定する。
   7  *   (1) Windows では set CLASSPATH=%CLASSPATH%;どこか\jfftpack.jar
   8  *   (2) Linux では export CLASSPATH=$CLASSPATH:どこか/jfftpack.jar
   9  *
  10  *   あるいは java コマンドの -classpath オプションを使う。
  11  *     java -classpath どこか/jfftpack.jar:. testfft
  12  *
  13  */
  14 
  15 import ca.uol.aig.fftpack.*;
  16 
  17 public class testfft {
  18     public static void main(String args[]) {
  19         int i,n;
  20         double dx,x;
  21         double [] a;
  22         n = 1024;
  23         a = new double [n];
  24         RealDoubleFFT myfft = new RealDoubleFFT(n);
  25         // n等分点上の関数値を求める
  26         dx = 2 * Math.PI / n;
  27         for (i = 0; i < n; i++) {
  28             x = i * dx;
  29             a[i] = 1+2*Math.cos(x)+3*Math.sin(x)+4*Math.cos(2*x);
  30         }
  31         // 離散Fourier変換
  32         myfft.ft(a);
  33         // Fourier係数を求める
  34         a[0] /= n;
  35         for (i = 1; i < n; i++)
  36             a[i] = a[i] / (n / 2.0);
  37         // 1,2,3,4が現われますやら…
  38         for (i = 0; i < 10; i++)
  39             System.out.printf("i=%d: %f\n", i, Math.abs(a[i]));
  40         //          System.out.println("i=" + i + ":" + Math.abs(a[i]));
  41     }
  42 }

[chronos:sound/sound/jfftpack] mk% java testfft
i=0: 1.000000
i=1: 2.000000
i=2: 3.000000
i=3: 4.000000
i=4: 0.000000
i=5: 0.000000
i=6: 0.000000
i=7: 0.000000
i=8: 0.000000
i=9: 0.000000
[chronos:sound/sound/jfftpack] mk%

無事に $ 1$, $ 2$, $ 3$, $ 4$, 0, $ \dots$となりました。



Subsections

桂田 祐史