f16.c

来自「16点的傅立叶算法」· C语言 代码 · 共 35 行

C
35
字号

/* 16点付氏变换的系数 */
#define ks1	382	
#define ks2	707	
#define ks3	923	
#define PI	3.1416
#define DU	PI/180	
int vsin,vcos;	/* 虚部和实部 */
int kkff;	/* 模(实部和虚部的平方和的开方) */

/* 16点付氏算法:ptr:指向一个周波的起始点,后三个指针为指向存储结果的单元的指针,asin:虚部,acos:实部,kf:模的平方 */
void f24(int *ptr,int *asin,int *acos,int *kf)
{
	long ar,ai;
	long pf; 
	ai=(ptr[1]+ptr[7]-ptr[9]-ptr[15])*ks1;
	ai+=(ptr[2]+ptr[6]-ptr[10]-ptr[14])*ks2;
	ai+=(ptr[3]+ptr[5]-ptr[11]-ptr[13])*ks3;
	ai+=(ptr[4]-ptr[12])*1000;
	ai=*asin=ai/1000;
	ar=(ptr[1]-ptr[7]-ptr[9]+ptr[15])*ks3;
	ar+=(ptr[2]-ptr[6]-ptr[10]+ptr[14])*ks2;
	ar+=(ptr[3]-ptr[5]-ptr[11]+ptr[13])*ks1;
	ar+=(ptr[0]-ptr[8])*1000;
	ar=*acos=ar/1000;
	*kf=(ar*ar+ai*ai)/64;/* 模的平方 */
}
main()
{
	int i;
	int x[16]={0,783,1448,1892,2047,1892,1448,783,0,-783,-1448,-1892,-2048,-1892,-1448,-783};
	f24(x,&vsin,&vcos,&kkff);
	return;
}

⌨️ 快捷键说明

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