Home

  大浦拓哉 助教 作製 汎用 FFT パッケージ の修正箇所の説明                                    Ver.1.0 '19/07/14                           All rights reserved JA3OOK 中村 利和   大浦拓哉 京大助教 作製 汎用 FFT パッケージ(参考文献1)に含まれている    ・fft8g.c C言語 - 高速版 (基数 8, 4, 2)  の修正箇所を、ライセンス事項に従い説明します。(本パッケージを SDRsoft88の製作 に使用)   なお、修正と動作後の検証にあたり、一木裕貴氏の「C→Javaへの移植」事例(参考文献2)を  参考にしました。   ソースの比較に「のん」さん作製の テキスト差分表示ツール TextDiffDsp (参考文献3)  を使用しました。   上記の方々に感謝申し上げます。 1.修正の目的    C から Visual C# 2017 への移植。 2.修正箇所   a 今回使用する関数を絞り込む。 void cdft(int n, int isgn, double* a, int* ip, double* w) void makewt(int nw, int* ip, double* w) void bitrv2(int n, int* ip, double* a) void bitrv2conj(int n, int* ip, double* a) void cftfsub(int n, double* a, double* w) void cftbsub(int n, double* a, double* w) void cft1st(int n, double* a, double* w) void cftmdl(int n, int l, double* a, double* w)     修正はこれらの関数に対して行い、他はコメント化する。     以下、修正箇所を例で示します。   b 関数の仮引数での配列宣言の違い       void cdft(int n, int isgn, double *a, int *ip, double *w)         ↓    public static void cdft(int n, int isgn, double[] a, int[] ip, double[] w)   c 関数呼び出し側の引数に 配列名+2 と書かれている箇所があり、これは配列要素番号の     2つ先を示す意味である。     C#ではこの書き方は許されないので、関数定義側のこの配列の要素番号に +2 を書き加え     る。     <実引数に必ず +2 を付けてこの関数を呼び出しているので、以下の修正方法でOK。g項参照 >      関数呼び出し側      bitrv2(n, ip + 2, a);         ↓ bitrv2_p2(n, ip, a);      関数定義側    void bitrv2(int n, int* ip, double* a)         ↓    static void bitrv2_p2(int n, int[] ip, double[] a)       この関数内のこの配列を使っている全ての命令に + 2 を追記する。    ip[m + j] = ip[j] + l;         ↓    ip[m + j + 2] = ip[j + 2] + l; ip[0] = 0;         ↓ ip[2] = 0;   d atan、sin、cos等の関数に Math. を付け、先頭文字を大文字に変更 delta = atan(1.0) / nwh;         ↓ delta = Math.Atan(1.0) / nwh;   e C#では不要になる行をコメント化      ・関数のプロトタイプ宣言      ・#include宣言   f ソースコードに修正前後のコードを記載   g 参考     今回は使用していない関数で、呼び出し側の引数に 配列名+nw と書かれている箇所があり    ます。これは、上記c項の 配列名+2 が 配列名+nw と、定数が変数に変わったのです。    この場合、引数を1個増やし、nw を引数として引き渡すようにコードを変更し、それに合わ    せて関数定義側コードも変更します。 参考文献 1 大浦 拓哉 京都大学数理解析研究所 “汎用 FFT (高速 フーリエ/コサイン/サイン 変換) パッケージ 2 一木裕貴 明治大学 理工学部 数学科 Javaによる音のFourier解析 大浦FFTの書き換え(C→Javaへの移植) 3 のん テキスト差分表示ツール

 直前の画面へは ブラウザの戻る をクリックしてください。Topに戻るにはHome