• 大小: 3KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: C/C++
  • 标签:

资源简介

用于计算实序列的快速傅立叶变换c源程序(对于按时间抽取的基2复序列FFT算法进行一定的修改)。

资源截图

代码片段和文件信息

#include
#include
void rfft(double x[]int n);
//void fft(double x[]double y[]int nint sign);

void main()
{
 int in;
 double x[64];
 n=64;
 for(i=0;i<10;i++) //设置函数
 x[i]=0.0;
 for(i=10;i  x[i]=exp(-(i-10)/15.0)*sin(6.2831853*(i-10)/16.0);
 printf(“\n输入序列x[i]为:\n“);
 for(i=0;i {printf(“%10.7f“x[i]);
  if(i%4==0)
  printf(“\n“);
 }
 rfft(xn);
 printf(“\n离散傅立叶变换X(k)为:\n“);
 printf(“%10.7f“x[0]);
 printf(“ %10.7f+j%10.7f\n“x[1]x[n-1]);
 for(i=2;i {
  printf(“%10.7f+j%10.7f“x[i]x[n-i]);
  printf(“          %10.7f+j%10.7f“x[i+1]x[n-i-1]);
  printf(“\n“);
 }
 printf(“%10.7f“x[n/2]);
 printf(“ %10.7f+j%10.7f\n“x[n/2-1]-x[n/2+1]);
 for(i=2;i {
  printf(“%10.7f+j%10.7f“x[n/2-i]-x[n/2+i]);
  printf(“         %10.7f+j%10.7f“x[n/2-i-1]-x[n/2+i+1]);
  printf(“\n“);
 }
/* for(i=0;i  y[i]=0;
 fft(xyn-1);
 printf(“傅立叶逆变换x(i)为:\n“);
 for(i=0;i {
  for(j=0;j<2;j++)
  printf(“%10.7f+j%10.7f “x[2*i+j]y[2*i+j]);
  printf(“\n“);
 }*/


}

void rfft(double x[]int n)
{
 int ijkmi1i2i3i4n1n2n4;
 double aeccssxtt1t2;
 for(j=1i=1;i<16;i++)
 {
  m=i;
  j=2*j;
  if(j==n)
  break;
 }
 n1=n-1;
 for(j=0i=0;i {
  if(i  {
   xt=x[j];
   x[j]=x[i];
   x[i]=xt;
  }
  k=n/2;
  while(k<(j+1))
  {
   j=j-k;
   k=k/2;

评论

共有 条评论

相关资源