![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Application example of FftReal class. FftReal クラスの使用例.
Dependencies: Array_Matrix mbed UIT_FFT_Real
main.cpp
- Committer:
- MikamiUitOpen
- Date:
- 2020-12-12
- Revision:
- 4:8248d5b5cdc9
- Parent:
- 3:4ef52c7f5281
File content as of revision 4:8248d5b5cdc9:
//-------------------------------------------------------------- // FftReal クラスのデモ用プログラム // // 2020/12/12, Copyright (c) 2020 MIKAMI, Naoki //-------------------------------------------------------------- #include "dftReal.hpp" #include "fftReal.hpp" using namespace Mikami; #pragma diag_suppress 870 // マルチバイト文字使用の警告抑制のため int main() { const int N = 16; // FFT のデータ数 // const int N = 256; // FFT のデータ数 float x1[N], x2[N]; Complex y1[N], y2[N/2+1]; // 乱数生成 srand(1234); for (int n=0; n<N; n++) x1[n] = 2.0f*rand()/(float)RAND_MAX - 1.0f; printf("\r\n#### 元のデータ ####\r\n"); for (int n=0; n<N; n++) printf("f[%2d]: %8.4f\r\n", n, x1[n]); Timer tm; // 実行時間測定のため // DFT, 比較のため tm.reset(); tm.start(); DftReal(x1, y1, N); tm.stop(); printf("\r\n実行時間 (DFT): %d [μs]\r\n", tm.read_us()); // FFT FftReal fft(N); tm.reset(); tm.start(); fft.Execute(x1, y2); tm.stop(); printf("実行時間 (FFT): %d [μs]\r\n", tm.read_us()); printf("\r\n#### DFT と FFT による結果 ####\r\n"); printf(" 実部 虚部 実部 虚部\r\n"); for (int n=0; n<=N/2; n++) printf("F[%2d]: %8.4f, %8.4f; %8.4f, %8.4f\r\n", n, y1[n].real(), y1[n].imag(), y2[n].real(), y2[n].imag()); // IFFT tm.reset(); tm.start(); fft.ExecuteIfft(y2, x2); tm.stop(); printf("\r\n実行時間 (IFFT): %d [μs]\r\n", tm.read_us()); printf("\r\n#### IFFT の結果 ####\r\n"); printf(" 元の値 FFT の IFFT\r\n"); for (int n=0; n<N; n++) printf("f[%2d]: %8.4f, %8.4f\r\n", n, x1[n], x2[n]); }