// テキストファイルComplex Text形式)を読み込み高速フーリエ変換/逆変換して,テキストファイルComplex Text形式)を作成するプログラム // プログラム名:fft_cpx2cpx.cpp #include "eps-header.hh" #include "fft-header.hh" // テキストファイルComplex Text形式)を読み込み高速フーリエ変換/逆変換して,テキストファイルComplex Text形式)を作成する関数 void fft_cpx2cpx(void) { printf("\nテキストファイルComplex Text形式)を読み込み高速フーリエ変換/逆変換して,テキストファイルComplex Text形式)を作成します。\n"); class fourier data; // 高速フーリエ変換クラスの宣言 data.cpx_load(); // テキストファイル(Complex Text形式)からデータを入力 int nr_lines = data.get_nr_lines(); int nr_pixels = data.get_nr_pixels(); if (data.get_complex_type() == COMPLEX_SPACE) { printf("テキストファイル(Complex Text形式)は,空間領域のデータです。\n"); printf("フーリエ変換し,周波数領域のデータを作成します。\n"); data.Forward_FFT(); // フーリエ変換 } else { printf("テキストファイル(Complex Text形式)は,周波数領域のデータです。\n"); printf("フーリエ逆変換し,空間領域のデータを作成します。\n"); data.Backward_FFT(); // フーリエ逆変換 double d = (double)nr_lines * (double)nr_pixels; for (int iy = 0; iy < nr_lines; iy ++) { for (int ix = 0; ix < nr_pixels; ix ++) { data.p[iy][ix] /= d; } } } data.cpx_save(); // 高速フーリエ変換したデータをテキストファイル(Complex Text形式)に出力する。 // テキストファイル(Complex Text形式)を指定したい場合は, // dst_f.cpx_save("パス付きBMPファイル名"); // とする。 } // プログラムの開始位置 int main() { // テキストファイルComplex Text形式)を読み込み高速フーリエ変換/逆変換して,テキストファイルComplex Text形式)を作成する fft_cpx2cpx(); }