⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fft.cpp

📁 快速傅里叶变换fft算法
💻 CPP
字号:

/*
  Short test program to accompany fix_fft.c
  使用N点fft计算2N点实序列的DFT
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "fft.h"

////////////file test/////////////////
#define FFT_SIZE  128
#define log2FFT   7
#define FREQUENCY 1
#define AMPLITUDE (128*500/FFT_SIZE)

int main()
{
	FILE *fp;
	float a[FFT_SIZE];
	short x[FFT_SIZE];
	int i;
	if((fp = fopen("D:\\work\\matlab\\fft\\time8.txt","rt")) == NULL)
		exit(1);
	for(i=0;i<FFT_SIZE;i++)
		//matlab中使用6f,c语言中使用9f
		fscanf(fp,"%9f",&a[i]);
	fclose(fp);
	puts("===============x===================");
	for (i=0; i<FFT_SIZE; i++)
	{
		x[i] = short(AMPLITUDE*a[i]);
		printf("%d%s%d\n",i," ",x[i]);
	}
	puts("===============fx===================");
	fix_fftr1(x, log2FFT);

	for (i=0; i<FFT_SIZE; i++)
	{
		printf("%d%s%d\n",i," ",x[i]/AMPLITUDE);
	}

	return 0;
}
//////////////////////////////

/*
//////fix_fftr1/////////////////
#define FFT_SIZE  128
#define log2FFT   7
#define FREQUENCY 1
#define AMPLITUDE (128*500/FFT_SIZE)

int main()
{

	int i;
	short x[FFT_SIZE];
	puts("===============x===================");
	for (i=0; i<FFT_SIZE; i++)
	{
		x[i] = AMPLITUDE*cos(i*FREQUENCY*(2*3.1415926535)/FFT_SIZE);
		printf("%d%s%d\n",i," ",x[i]);
	}
	puts("===============fx===================");
	fix_fftr1(x, log2FFT);

	for (i=0; i<FFT_SIZE; i++)
	{
		printf("%d%s%d\n",i," ",x[i]/AMPLITUDE);
	}
		return 0;
}
//////////////////////////////////////
*/
/*
//////fix_fftr2/////////////////
#define FFT_SIZE  128
#define log2FFT   7
#define FREQUENCY 1
#define AMPLITUDE 12288 //(1<<(log2FFT*2))

int main()
{

	int i;
	short x[FFT_SIZE];
	puts("===============x===================");
	for (i=0; i<FFT_SIZE; i++)
	{
		x[i] = AMPLITUDE*cos(i*FREQUENCY*(2*3.1415926535)/FFT_SIZE);
		printf("%d%s%d\n",i," ",x[i]);
	}
	puts("===============fx===================");
	fix_fftr2(x, log2FFT);

	for (i=0; i<FFT_SIZE; i++)
	{
		printf("%d%s%d\n",i," ",x[i]);
	}
		return 0;
}
//////////////////////////////////////
*/
/*
//////fix_fftr3/////////////////
#define FFT_SIZE  1024
#define log2FFT   10
#define FREQUENCY 1
#define AMPLITUDE (128*500/FFT_SIZE)

int main()
{

	int i;
	short x[FFT_SIZE];
	puts("===============x===================");
	for (i=0; i<FFT_SIZE; i++)
	{
		x[i] = AMPLITUDE*cos(i*FREQUENCY*(2*3.1415926535)/FFT_SIZE);
		printf("%d%s%d\n",i," ",x[i]);
	}
	puts("===============fx===================");
	fix_fftr3(x, log2FFT);

	for (i=0; i<FFT_SIZE; i++)
	{
		printf("%d%s%d\n",i," ",x[i]/AMPLITUDE);
	}
		return 0;
}
//////////////////////////////////////
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -