用c写一个快速傅里叶变换函数
时间: 2024-05-25 22:15:56 浏览: 42
快速傅里叶变换的C代码
4星 · 用户满意度95%
#include<stdio.h>
#include<math.h>void FFT(double *x,int N)
{
double Wn,W,temp;
int i,j,k,m,L;
for(m=N;m>=2;m/=2)
{
L=m/2;
Wn=cos(2*M_PI/m);
W=1;
for(j=0;j<L;j++)
{
for(i=j;i<N;i+=m)
{
k=i+L;
temp=x[i]-x[k];
x[i]=x[i]+x[k];
x[k]=W*temp;
}
W=W*Wn;
}
}
for(i=0;i<N;i++)
{
for(j=i+1;j<N;j++)
{
if(x[j]>x[i])
{
temp=x[i];
x[i]=x[j];
x[j]=temp;
}
}
}
}我可以提供一个用C语言写的快速傅里叶变换函数的示例:
#include<stdio.h>
#include<math.h>void FFT(double *x,int N)
{
double Wn,W,temp;
int i,j,k,m,L;
for(m=N;m>=2;m/=2)
{
L=m/2;
Wn=cos(2*M_PI/m);
W=1;
for(j=0;j<L;j++)
{
for(i=j;i<N;i+=m)
{
k=i+L;
temp=x[i]-x[k];
x[i]=x[i]+x[k];
x[k]=W*temp;
}
W=W*Wn;
}
}
for(i=0;i<N;i++)
{
for(j=i+1;j<N;j++)
{
if(x[j]>x[i])
{
temp=x[i];
x[i]=x[j];
x[j]=temp;
}
}
}
}我可以提供一个用C语言写的快速傅里叶变换函数的示例:
#include<stdio.h>
#include<math.h>void FFT(double *x,int N)
{
double Wn,W,temp;
int i,j,k,m,L;
for(m=N;m>=2;m/=2)
{
L=m/2;
Wn=cos(2*M_PI/m);
W=1;
for(j=0;j<L;j++)
{
for(i=j;i<N;i+=m)
{
k=i+L;
temp=x[i]-x[k];
x[i]=x[i]+x[k];
x[k]=W*temp;
}
W=W*Wn;
}
}
for(i=0;i<N;i++)
{
for(j=i+1;j<N;j++)
{
if(x[j]>x[i])
{
temp=x[i];
x[i]=x[j];
x[j]=temp;
}
}
}
}我可以为您提供一个使用C语言编写的快速傅里叶变换函数的示例。
阅读全文