.

概要

任意の長さのデータについて高速フーリエ変換をおこなう サブルーチンパッケージ. NCARの数値計算ライブラリより移植した.

サブルーチンの説明の中の「定義」の節では, 入出力パラメータの数学的解説に関して次のような表記法をとる: 処理する配列X(長さN)の第i番目 (i=1, ..., N) の 配列要素について,入力時の値をx_i(小文字), 出力時の値をX_i(大文字)と書く.

以下の7つのサブルーチン群の中で初期化をおこなうサブルーチン (サブルーチン名がIで終わる)は,そのサブルーチン群に属する 変換ルーチンを用いる際,かならず最初に1回呼ばなければならない. ただしそれ以後は,異なるデータ数を指定するときに限って 初期化ルーチンを呼べばよい. なお,初期化ルーチンが用いる作業領域は,同じサブルーチン群に 属する変換ルーチンを用いている間変更してはならない. (この作業領域には,因数と三角関数表が格納されている).

サブルーチンのリスト

周期実数値データのフーリエ変換をおこなうサブルーチン群.

                                                 
  RFFTI(N,WSAVE)     初期化をおこなう.          
                                                 
  RFFTF(N,R,WSAVE)   フーリエ順変換をおこなう.  
                                                 
  RFFTB(N,R,WSAVE)   フーリエ逆変換をおこなう.  
                                                 

RFFTI, RFFTF, RFFTBの簡易型サブルーチン群.

                                                         
  EZFFTI(N,WSAVE)            初期化をおこなう.          
                                                         
  EZFFTF(N,R,A0,A,B,WSAVE)   フーリエ順変換をおこなう.  
                                                         
  EZFFTB(N,R,A0,A,B,WSAVE)   フーリエ逆変換をおこなう.  
                                                         

奇の周期データのSINE変換をおこなうサブルーチン群.

                                          
  SINTI(N,WSAVE)    初期化をおこなう.    
                                          
  SINT(N,X,WSAVE)   SINE変換をおこなう.  
                                          

偶の周期データのCOSINE変換をおこなうサブルーチン群.

                                            
  COSTI(N,WSAVE)    初期化をおこなう.      
                                            
  COST(N,X,WSAVE)   COSINE変換をおこなう.  
                                            

奇数波数成分のみのSIN変換をおこなうサブルーチン群.

                                             
  SINQI(N,WSAVE)     初期化をおこなう.      
                                             
  SINQF(N,X,WSAVE)   SINE順変換をおこなう.  
                                             
  SINQB(N,X,WSAVE)   SINE逆変換をおこなう.  
                                             

偶数波数成分のみのCOSINE変換をおこなうサブルーチン群.

                                               
  COSQI(N,WSAVE)     初期化をおこなう.        
                                               
  COSQF(N,X,WSAVE)   COSINE順変換をおこなう.  
                                               
  COSQB(N,X,WSAVE)   COSINE逆変換をおこなう.  
                                               

周期複素数データのフーリエ変換をおこなうサブルーチン群.

                                                 
  CFFTI(N,WSAVE)     初期化をおこなう.          
                                                 
  CFFTF(N,C,WSAVE)   フーリエ順変換をおこなう.  
                                                 
  CFFTB(N,C,WSAVE)   フーリエ逆変換をおこなう.  
                                                 

サブルーチンの説明

RFFTI/RFFTF/RFFTB

  1. 機能
    周期実数値データのフーリエ変換をおこなう. RFFTIは初期化をおこなう; RFFTFはフーリエ順変換をおこなう; RFFTBはフーリエ逆変換をおこなう.
  2. 定義
    N が偶数のとき N' = N/2-1 , N が奇数のとき N' = (N-1)/2 とおく.
    順変換は次のように定義される. [ R_1 = Σ_i=1^Nr_i, ] [ R_2k = Σ_i=1^Nr_i 2π (i-1)kN, R_2k+1 = - Σ_i=1^Nr_i 2π (i-1)kN ( k = 1, ..., N' ). ] ただし N が偶数のとき, [ R_N = Σ_i=1^N(-1)^i-1r_i. ]

    逆変換は次のように定義される.
    N が偶数のとき, [ R_i = r_1 + (-1)^i-1r_N + 2 Σ_k=1^N' ( r_2k 2π (i-1)kN - r_2k+1 2π (i-1)kN) ( i = 1, ..., N ). ] N が奇数のとき, [ R_i = r_1 + 2 Σ_k=1^N' ( r_2k 2π (i-1)kN - r_2k+1 2π (i-1)kN) ( i = 1, ..., N ). ]

  3. 呼び出し方法
    CALL RFFTI(N,WSAVE)
    CALL RFFTF(N,R,WSAVE)
    CALL RFFTB(N,R,WSAVE)
  4. パラメーターの説明
                                                                            
      N       (I)   処理するデータの長さ.                                  
                                                                            
      WSAVE   (R)   作業用配列.長さは少なくとも                            
                    2N+15以上でなければならない.                           
                                                                            
      R       (R)   処理する実数型配列.                                    
                    入力パラメータでもあり出力パラメータでもある.          
                    (上記定義参照).                                       
                                                                            
    
  5. 備考
    1. この変換では正規化されない. つまりRFFTF, RFFTBを続けて呼ぶと,もとの N倍の値が返される.

EZFFTI/EZFFTF/EZFFTB

  1. 機能
    RFFTI, RFFTF, RFFTBの簡易型サブルーチン. EZFFTIは初期化をおこなう; EZFFTFはフーリエ順変換をおこなう; EZFFTBはフーリエ逆変換をおこなう.
  2. 定義
    順変換は次のように定義される. ( N が偶数のとき N' = N/2-1 , N が奇数のとき N' = (N-1)/2 とおく.) [ A_0 = 1N Σ_i=1^Nr_i, ] [ A_k = 2N Σ_i=1^Nr_i 2π (i-1)kN, B_k = 2N Σ_i=1^Nr_i 2π (i-1)kN ( k = 1, ..., N' ). ] ただし N が偶数のとき, [ A_N/2 = 1NΣ_i=1^N(-1)^i-1r_i, B_N/2 = 0. ]

    逆変換は次のように定義される. ( N が偶数のとき N' = N/2 , N が奇数のとき N' = (N-1)/2 とおく.) [ R_i = a_0 + Σ_k=1^N' ( a_k 2π (i-1)kN + b_k 2π (i-1)kN) ( i = 1, ..., N ). ]

  3. 呼び出し方法
    CALL EZFFTI(N,WSAVE)
    CALL EZFFTF(N,R,A0,A,B,WSAVE)
    CALL EZFFTB(N,R,A0,A,B,WSAVE)
  4. パラメーターの説明
                                                                            
      N       (I)   処理するデータの長さ.                                  
                                                                            
      WSAVE   (R)   作業用配列.長さは少なくとも                            
                    3N+15以上でなければならない.                           
                                                                            
      R       (R)   処理する実数型配列. EZFFTFにおいては入力パラメータ,   
                    EZFFTBにおいては出力パラメータである.                  
                                                                            
      A0      (R)   上記定義における A_0 および a_0 .                       
                                                                            
      A, B    (R)   Nが偶数のとき N/2, Nが奇数のとき(N-1)                   
                    /2の長さの 実数型配列(上記定義参照).                  
                                                                            
    
  5. 備考
    1. この変換では正規化される. つまりEZFFTF, EZFFTBを続けて呼ぶと,もとの 値が返される.

SINTI/SINT

  1. 機能
    奇の周期データのSINE変換をおこなう. SINTIは初期化をおこなう; SINTはSINE変換をおこなう.
  2. 定義
    順変換は次のように定義される. [ X_k = 2Σ_i=1^Nx_i π ikN+1, ( k = 1, ..., N ). ]

    逆変換は順変換と同じである.

  3. 呼び出し方法
    CALL SINTI(N,WSAVE)
    CALL SINT(N,R,WSAVE)
  4. パラメーターの説明
                                                                            
      N       (I)   処理するデータの長さ.                                  
                                                                            
      WSAVE   (R)   作業用配列.長さは少なくとも                            
                    2.5N+15以上でなければならない.                         
                                                                            
      R       (R)   処理する実数型配列.                                    
                    入力パラメータでもあり出力パラメータでもある            
                    (上記定義参照).                                       
                                                                            
    
  5. 備考
    1. SINTは逆変換でもある. また,この変換では正規化されない. つまりSINTを2回続けて呼ぶと,もとの 2(N+1)倍の値が返される.

COSTI/COST

  1. 機能
    偶の周期データのCOSINE変換をおこなう. COSTIは初期化をおこなう; COSTはCOSINE変換をおこなう.
  2. 定義
    順変換は次のように定義される. [ X_k = x_1 + (-1)^k-1x_N + 2Σ_i=2^Nx_i π (i-1)(k-1)N-1, ( k = 1, ..., N ). ]

    逆変換は順変換と同じである.

  3. 呼び出し方法
    CALL COSTI(N,WSAVE)
    CALL COST(N,R,WSAVE)
  4. パラメーターの説明
                                                                            
      N       (I)   処理するデータの長さ.                                  
                                                                            
      WSAVE   (R)   作業用配列.長さは少なくとも                            
                    3N+15以上でなければならない.                           
                                                                            
      R       (R)   処理する実数型配列.                                    
                    入力パラメータでもあり出力パラメータでもある            
                    (上記定義参照).                                       
                                                                            
    
  5. 備考
    1. COSTは逆変換でもある. また,この変換では正規化されない. つまりCOSTを2回続けて呼ぶと,もとの 2(N-1)倍の値が返される.

SINQI/SINQF/SINQB

  1. 機能
    奇数波数成分のみのSIN変換をおこなう. SINQIは初期化をおこなう; SINQFはSINE順変換をおこなう; SINQBはSINE逆変換をおこなう.
  2. 定義
    順変換は次のように定義される. [ X_k = (-1)^k-1x_N + 2 Σ_i=1^N-1r_i π (2k-1)i2N ( k = 1, ..., N ). ]

    逆変換は次のように定義される. [ X_i = 4 Σ_k=1^Nr_k π (2k-1)i2N ( i = 1, ..., N ). ]

  3. 呼び出し方法
    CALL SINQI(N,WSAVE)
    CALL SINQF(N,R,WSAVE)
    CALL SINQB(N,R,WSAVE)
  4. パラメーターの説明
                                                                            
      N       (I)   処理するデータの長さ.                                  
                                                                            
      WSAVE   (R)   作業用配列.長さは少なくとも                            
                    3N+15以上でなければならない.                           
                                                                            
      R       (R)   処理する実数型配列.                                    
                    入力パラメータでもあり出力パラメータでもある            
                    (上記定義参照).                                       
                                                                            
    
  5. 備考
    1. この変換では正規化されない. つまりSINQF, SINQBを続けて呼ぶと,もとの 4N倍の値が返される.

COSQI/COSQF/COSQB

  1. 機能
    偶数波数成分のみのCOSSINE変換をおこなう. COSQIは初期化をおこなう; COSQFはCOSINE順変換をおこなう; COSQBはCOSINE逆変換をおこなう.
  2. 定義
    順変換は次のように定義される. [ X_k = x_1 + 2 Σ_i=2^Nr_i π (2k-1)(i-1)2N ( k = 1, ..., N ). ]

    逆変換は次のように定義される. [ X_i = 4 Σ_k=1^Nr_k π (2k-1)(i-1)2N ( i = 1, ..., N ). ]

  3. 呼び出し方法
    CALL COSQI(N,WSAVE)
    CALL COSQF(N,R,WSAVE)
    CALL COSQB(N,R,WSAVE)
  4. パラメーターの説明
                                                                            
      N       (I)   処理するデータの長さ.                                  
                                                                            
      WSAVE   (R)   作業用配列.長さは少なくとも                            
                    3N+15以上でなければならない.                           
                                                                            
      R       (R)   処理する実数型配列.                                    
                    入力パラメータでもあり出力パラメータでもある            
                    (上記定義参照).                                       
                                                                            
    
  5. 備考
    1. この変換では正規化されない. つまりCOSQF, COSQBを続けて呼ぶと,もとの 4N倍の値が返される.

CFFTI/CFFTF/CFFTB

  1. 機能
    周期複素数データのフーリエ変換をおこなう. CFFTIは初期化をおこなう; CFFTFはフーリエ順変換をおこなう; CFFTBはフーリエ逆変換をおこなう.
  2. 定義
    以下では i = √-1 とする.
    順変換は次のように定義される. [ C_k = Σ_j=1^Nc_j (-i2π (j-1)(k-1)N) ( k = 1, ..., N ). ]

    逆変換は次のように定義される. [ C_j = Σ_k=1^Nc_k (i2π (j-1)(k-1)N) ( j = 1, ..., N ). ]

  3. 呼び出し方法
    CALL CFFTI(N,WSAVE)
    CALL CFFTF(N,C,WSAVE)
    CALL CFFTB(N,C,WSAVE)
  4. パラメーターの説明
                                                                            
      N       (I)   処理するデータの長さ.                                  
                                                                            
      WSAVE   (R)   作業用配列.長さは少なくとも                            
                    4N+15以上でなければならない.                           
                                                                            
      C       (C)   処理する複素数型配列.                                  
                    入力パラメータでもあり出力パラメータでもある            
                    (上記定義参照).                                       
                                                                            
    
  5. 備考
    1. この変換では正規化されない. つまりCFFTF, CFFTBを続けて呼ぶと,もとの N倍の値が返される.

その他のサブルーチン

このパッケージにはこのほかに以下の下位ルーチンがある. ここではサブルーチン名をあげるにとどめる.

                                                                             
  cfftb1   cfftf1   cffti1   cosqb1.   cosqf1.   ezfft1.   passb.    passb2  
  .f       .f       .f       f         f         f         f         .f      
                                                                             
  passb3   passb4   passb5   passf.    passf2.   passf3.   passf4.   passf5  
  .f       .f       .f       f         f         f         f         .f      
                                                                             
  pimach   radb2.   radb3.   radb4.    radb5.    radbg.    radf2.    radf3.  
  .f       f        f        f         f         f         f         f       
                                                                             
  radf4.   radf5.   radfg.   rfftb1.   rfftf1.   rffti1.   sint1.            
  f        f        f        f         f         f         f                 
                                                                             


Back to Main


Latex Source


地球流体電脳倶楽部 : 95/6/9 (Version 5.0)

NUMAGUTI Atusi <a1n@gfdl.gov>
Last Modified: Thu Aug 31 13:02:25 EDT 1995