龙空技术网

fftpack库的学习

天之6S 115

前言:

此时咱们对“fft c语言程序 下载”大致比较注意,兄弟们都需要分析一些“fft c语言程序 下载”的相关文章。那么小编同时在网络上搜集了一些对于“fft c语言程序 下载””的相关内容,希望大家能喜欢,同学们一起来了解一下吧!

fftpack库,使用的是pffft库中下载的,不需要额外配置,只需要fftpack.h和fftpack.c两个文件即可。使用也比较简单,有实数fft和复数fft两种。

(1) 复数例子

//复数fftvoid cfft_test(){int N = 16;int Nfloat = 2 * N;int Nbytes = Nfloat * sizeof(fftpack_real);fftpack_real *wrk = (fftpack_real*)malloc(2 * Nbytes + 15 * sizeof(fftpack_real));fftpack_real *refin = (fftpack_real*)malloc(Nbytes);printf("==================\ncomplex orgin data:\n");for (int k = 0; k < Nfloat; k += 2) {refin[k] = k*0.5f;refin[k + 1] = 0 * k*0.5f;printf("%d %f %f\n", k / 2, refin[k], refin[k + 1]);}cffti(N, wrk);cfftf(N, refin, wrk);printf("==================\nfft:\n");for (int i = 0; i < 2 * N; i += 2)printf("%d %f %f\n", i / 2, refin[i], refin[i + 1]);printf("======================\nifft:\n");cfftb(N, refin, wrk);for (int i = 0; i < 2 * N; i += 2)printf("%d %f %f\n", i / 2, refin[i] / N, refin[i + 1] / N);free(wrk);free(refin);}

(2) 实数例子

//实数fftvoid rfft_test(){int N = 16;int Nfloat = N;int Nbytes = Nfloat * sizeof(fftpack_real);fftpack_real *wrk = (fftpack_real*)malloc(2 * Nbytes + 15 * sizeof(fftpack_real));fftpack_real *refin = (fftpack_real*)malloc(Nbytes);fftpack_real *refinr = (fftpack_real*)malloc(2 * Nbytes);printf("==================\nreal orgin data:\n");for (int k = 0; k < Nfloat; k++) {refin[k] = k*1.0f;printf("%d %f \n", k, refin[k]);}rffti(N, wrk);rfftf(N, refin, wrk);printf("==================\nfft:\n");{refinr[0] = refin[0];refinr[1] = 0;refinr[Nfloat + 1] = 0;for (int i = 2; i <= Nfloat; i++){refinr[i] = refin[i - 1];}for (int i = Nfloat + 2; i <= 2 * Nfloat - 1; i++){if (i % 2)refinr[i] = -refinr[2 * Nfloat - i + 2];elserefinr[i] = refinr[2 * Nfloat - i];}}for (int i = 0; i < 2 * Nfloat; i += 2)printf("%d %f %f\n", i / 2, refinr[i], refinr[i + 1]);printf("======================\nifft:\n");rfftb(N, refin, wrk);for (int i = 0; i < Nfloat; i++)printf("%d %f \n", i / 2, refin[i] / N);free(wrk);free(refin);free(refinr);}

(3) 分析

· 与matlab结果比对一致,运算速度还可以。

· 支持double和float。

· 使用简单。

标签: #fft c语言程序 下载