#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "fftw3.h"
#pragma comment(lib, "libfftw3-3.lib") // double版本
// #pragma comment(lib, "libfftw3f-3.lib")// float版本
// #pragma comment(lib, "libfftw3l-3.lib")// long double版本
#define PI 3.1415926
int main()
{
int len1 = 8;
int len2 = 8;
// 如果要使用float版本,需先引用float版本的lib库,然后在fftw后面加上f后缀即可.
fftw_complex *out = NULL;// fftwf_complex --> 即为float版本
fftw_plan p;
out = (fftw_complex *)fftw_malloc(sizeof(fftw_complex) * len1);
double dx = 1.0 / len1;
// 输入纯实数
int i;
double in1[10] = {0.00,1.71,1.00,-0.29,-0.00,0.29,-1.00,-1.71};
for (int i = 0; i < len1; i++)
{
printf("%.2f ", in1[i]); }
printf("\n\n");
// 傅里叶变换
p = fftw_plan_dft_r2c_1d(len1, in1, out, FFTW_ESTIMATE);
fftw_execute(p);
// 输入纯实数
int j;
double in2[10] = {0.00,1.71,1.00,-0.29,-0.00,0.29,-1.00,-1.71};
for (int j = 0; j < len2; j++)
{
printf("%.2f ", in2[j]); }
printf("\n\n");
// 傅里叶变换
p = fftw_plan_dft_r2c_1d(len2, in2, out, FFTW_ESTIMATE);
fftw_execute(p);
// 输出幅度谱
for (int i = 0; i < len1; i++)
for (int j = 0; j < len2; j++)
double len1 = sqrt(out[i][0]*out[i][0] + out[i][1]*out[i][1]);
printf("%.2f ", len1);
printf("\n\n");
// 输出幅度谱
double len2 = sqrt(out[j][0]*out[j][0] + out[j][1]*out[j][1]);
printf("%.2f ", len2);
printf("\n");
#include <stdlib.h>
#include <math.h>
#include "fftw3.h"
#pragma comment(lib, "libfftw3-3.lib") // double版本
// #pragma comment(lib, "libfftw3f-3.lib")// float版本
// #pragma comment(lib, "libfftw3l-3.lib")// long double版本
#define PI 3.1415926
int main()
{
int len1 = 8;
int len2 = 8;
// 如果要使用float版本,需先引用float版本的lib库,然后在fftw后面加上f后缀即可.
fftw_complex *out = NULL;// fftwf_complex --> 即为float版本
fftw_plan p;
out = (fftw_complex *)fftw_malloc(sizeof(fftw_complex) * len1);
double dx = 1.0 / len1;
// 输入纯实数
int i;
double in1[10] = {0.00,1.71,1.00,-0.29,-0.00,0.29,-1.00,-1.71};
for (int i = 0; i < len1; i++)
{
printf("%.2f ", in1[i]); }
printf("\n\n");
// 傅里叶变换
p = fftw_plan_dft_r2c_1d(len1, in1, out, FFTW_ESTIMATE);
fftw_execute(p);
// 输入纯实数
int j;
double in2[10] = {0.00,1.71,1.00,-0.29,-0.00,0.29,-1.00,-1.71};
for (int j = 0; j < len2; j++)
{
printf("%.2f ", in2[j]); }
printf("\n\n");
// 傅里叶变换
p = fftw_plan_dft_r2c_1d(len2, in2, out, FFTW_ESTIMATE);
fftw_execute(p);
// 输出幅度谱
for (int i = 0; i < len1; i++)
for (int j = 0; j < len2; j++)
double len1 = sqrt(out[i][0]*out[i][0] + out[i][1]*out[i][1]);
printf("%.2f ", len1);
printf("\n\n");
// 输出幅度谱
double len2 = sqrt(out[j][0]*out[j][0] + out[j][1]*out[j][1]);
printf("%.2f ", len2);
printf("\n");