资源简介
压缩包中的fft.c包含了所有子程序和main,可以直接运行。另一个文件夹是基于TMS320C5509软仿的工程。
代码片段和文件信息
#include
#include
#include
#define N 8 /* N应为2^m */
#define pi 3.1415926
/*FFT快速傅里叶变换*/
/*十进制转化成m位二进制数*/
int dec2bin(int k int *bin int m)
{
int i;
if (k > pow(2m)-1 || k<0)
{
printf(“输入十进制数超出m位二进制数的表示范围!\n“);
return 0;
}
for (i=0; i {
if(k>=pow(2m-1-i))
{
bin[i] = 1;
}
else
{
bin[i] = 0;
}
k = k % (int)pow(2m-1-i);
}
return 0;
}
/*m位二进制数转换成10进制*/
int bin2dec(int *bin int m)
{
int idec=0;
for (i=0; i {
dec = dec + (*(bin+i))*pow(2(m-i-1));
}
return dec;
}
/*将m位的数组倒序*/
int flpr(int *bin int m)
{//方法:把第0个元素和最后一个元素交换位置,再把第1个元素和倒数第二个元素交换位置以此类推
int x = m/2;
int i;
int tmp = 0;
for (i=0; i<=x; i++)
{//交换第i个元素和第m-1-i个元素
tmp = *(bin+i);
*(bin+i) = *(bin+m-1-i);
*(bin+m-1-i) = tmp;
}
return 0;
}
/*用结构体定义复数,并定义复数的运算规则*/
typedef struct ComplexData{
double real;
double imag;
}Complex;
Complex InitComplex(double c_r double c_i)
{//复数初始化
Complex z;
z.real = c_r;
z.imag = c_i;
return z;
}
double GetReal(Complex z)
{//取复数的实部
return z.real;
}
double GetImag(Complex z)
{//取复数的虚部
return z.imag;
}
Complex AddComplex(Complex z1 Complex z2)
{//复数的加法
Complex z3;
z3.real = z1.real + z2.real;
z3.imag = z1.imag + z2.imag;
return z3;
}
Complex SubComplex(Complex z1 Complex z2)
{//复数的减法
Complex z3;
z3.real = z1.real - z2.real;
z3.imag = z1.imag - z2.imag;
return z3;
}
Complex MulComplex(Complex z1 Complex z2)
{//复数的乘法
Complex z3;
z3.real = z1.real*z2.real - z1.imag*z2.imag;
z3.imag = z1.real*z2.imag + z1.imag*z2.real;
return z3;
}
Complex DivComplex(Complex z1 Complex z2)
{//复数的除法
Complex z3;
z3.real = (z1.real*z2.real + z1.imag*z2.imag)/(z2.real*z2.real - z2.imag*z2.imag);
z3.imag = (z1.imag*z2.real - z1.real*z2.imag)/(z2.real*z2.real - z2.imag*z2.imag);
return z3;
}
Complex PowComplex(Complex z1 int p)
{//求复数的p次方
int i;
Complex z2 = {00};
if(p==0)
{
z2.real = 1;
z2.imag = 0;
return z2;
}
z2.real = cos(2.0*pi*p/N);
z2.imag = -sin(2.0*pi*p/N);
return z2;
}
/*将输入序列x(n)的顺序重置,规则是将每个序列号的2进制码反向排列再转化成10进制序号*/
void reorder(double *ori_xn double *xn int m)
{
int k;
for (k=0; k< N; k++)
{
int k_pie = 0;
int *bin = (int *)malloc(m*sizeof(int));
dec2bin(k bin m);
flpr(bin m);
k_pie = bin2dec(binm);
*(xn+k) = *(ori_xn+k_pie);
free (bin);
}
}
/*FFT变换过程*/
void FFTtrans(double *pxn_re double *pxn_im double *pXK_re double *pXK_im)
{
int LBJPkm;
double tmp_re ;
double tmp_im ;
//Complex WN = {cos(2*pi/N)-sin(2*pi/N)}; //cos()函数的输入参数是弧度,要把角度转换成弧度:弧度=pi/180*角度
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 0 2017-04-19 08:57 case_FFT\.me
文件 488291 2017-04-20 11:54 case_FFT\.me
文件 438 2017-04-19 08:59 case_FFT\.me
文件 1469 2017-04-19 08:57 case_FFT\.me
文件 93396 2017-04-19 08:57 case_FFT\.me
文件 1469 2017-04-19 08:57 case_FFT\.me
文件 103416 2017-04-19 08:57 case_FFT\.me
文件 1469 2017-04-19 08:57 case_FFT\.me
文件 60725 2017-04-19 08:57 case_FFT\.me
文件 899 2017-04-20 13:45 case_FFT\.me
文件 281794 2017-04-19 08:57 case_FFT\.me
文件 143517 2017-04-19 08:57 case_FFT\.me
文件 144 2017-04-20 13:45 case_FFT\.me
文件 909 2017-04-20 13:45 case_FFT\.me
文件 254 2017-04-20 13:45 case_FFT\.me
文件 1092 2017-04-20 13:45 case_FFT\.me
文件 110592 2017-04-20 13:45 case_FFT\.me
文件 377 2017-04-20 13:45 case_FFT\.me
文件 1 2017-04-19 08:57 case_FFT\.me
文件 1 2017-04-19 08:57 case_FFT\.me
文件 226 2017-04-20 13:45 case_FFT\.me
文件 1468 2017-04-20 13:45 case_FFT\.me
文件 1468 2017-04-20 13:45 case_FFT\.me
文件 207 2017-04-19 10:29 case_FFT\.me
文件 3460 2017-04-19 13:38 case_FFT\.me
文件 289 2017-04-19 16:14 case_FFT\.me
文件 3029 2017-04-19 10:19 case_FFT\.me
文件 3637 2017-04-20 10:43 case_FFT\.me
文件 325 2017-04-19 16:26 case_FFT\.me
文件 3615 2017-04-20 10:29 case_FFT\.me
............此处省略866个文件信息
- 上一篇:DWA算法验证
- 下一篇:ATL 封装MFC对话框
评论
共有 条评论