傅里叶变换用C语言程序怎么实现?#include math.h
#include stdio.h
#define N 8
void kkfft(double pr[], double pi[], int n, int k, double fr[], double fi[], int l, int il);
void main()
{
double xr[N],xi[N],Yr[N],Yi[N],l=0,il=0;
int i,j,n=N,k=3;
for(i=0;iN;i++)
{
xr[i]=i;
xi[i]=0;
}
printf("------FFT------\n");
l=0;
kkfft(xr,xi,n,k,Yr,Yi,l,il);
for(i=0;iN;i++)
{
printf("%-11lf + j* %-11lf\n",Yr[i],Yi[i]);
}
printf("-----DFFT-------\n");
l=1;
kkfft(Yr,Yi,n,k,xr,xi,l,il);
for(i=0;iN;i++)
{
printf("%-11lf + j* %-11lf\n",xr[i],xi[i]);
}
getch();
}
void kkfft(double pr[], double pi[], int n, int k, double fr[], double fi[], int l, int il)
{
int it,m,is,i,j,nv,l0;
double p,q,s,vr,vi,poddr,poddi;
for (it=0; it=n-1; it++)
{
m = it;
is = 0;
for(i=0; i=k-1; i++)
{
j = m/2;
is = 2*is+(m-2*j);
m = j;
}
fr[it] = pr[is];
fi[it] = pi[is];
}
pr[0] = 1.0;
pi[0] = 0.0;
p = 6.283185306/(1.0*n);
pr[1] = cos(p);
pi[1] = -sin(p);
if (l!=0)
pi[1]=-pi[1];
for (i=2; i=n-1; i++)
{
p = pr[i-1]*pr[1];
q = pi[i-1]*pi[1];
s = (pr[i-1]+pi[i-1])*(pr[1]+pi[1]);
pr[i] = p-q;
pi[i] = s-p-q;
}
for (it=0; it=n-2; it=it+2)
{
vr = fr[it];
vi = fi[it];
fr[it] = vr+fr[it+1];
fi[it] = vi+fi[it+1];
fr[it+1] = vr-fr[it+1];
fi[it+1] = vi-fi[it+1];
}
m = n/2;
nv = 2;
for (l0=k-2; l0=0; l0--)
{
m = m/2;
nv = 2*nv;
for(it=0; it=(m-1)*nv; it=it+nv)
for (j=0; j=(nv/2)-1; j++)
{
p = pr[m*j]*fr[it+j+nv/2];
q = pi[m*j]*fi[it+j+nv/2];
s = pr[m*j]+pi[m*j];
s = s*(fr[it+j+nv/2]+fi[it+j+nv/2]);
poddr = p-q;
poddi = s-p-q;
fr[it+j+nv/2] = fr[it+j]-poddr;
fi[it+j+nv/2] = fi[it+j]-poddi;
fr[it+j] = fr[it+j]+poddr;
fi[it+j] = fi[it+j]+poddi;
}
}
/*逆傅立叶变换*/
if(l!=0)
{
for(i=0; i=n-1; i++)
{
fr[i] = fr[i]/(1.0*n);
fi[i] = fi[i]/(1.0*n);
}
}
/*是否计算模和相角*/
if(il!=0)
{
for(i=0; i=n-1; i++)
{
pr[i] = sqrt(fr[i]*fr[i]+fi[i]*fi[i]);
if(fabs(fr[i])0.000001*fabs(fi[i]))
{
if ((fi[i]*fr[i])0)
pi[i] = 90.0;
else
pi[i] = -90.0;
}
else
pi[i] = atan(fi[i]/fr[i])*360.0/6.283185306;
}
}
return;
}
傅里叶变换有哪些具体的应用傅里叶变换具体的应用如下:
1、图像压缩,可以直接通过傅里叶系数来压缩数据 , 常用的离散余弦变换是傅立叶变换的实变换 , 傅里叶变换是将时域信号分解为不同频率的正弦信号或余弦函数叠加之和 , 连续情况下要求原始信号在一个周期内满足绝对可积条件;
2、图像增强与图像去噪,绝大部分噪音都是图像的高频分量,通过低通滤波器来滤除高频噪声,边缘也是图像的高频分量,通过添加高频分量来增强原始图像的边缘,图像分割之边缘检测,提取图像高频分量;
3、线性的积分变换,将信号在时域或空域和频域之间变换时使用 , 在物理学和工程学中有许多应用,在不同的研究领域 , 傅立叶变换具有多种不同的变体形式,如连续傅立叶变换和离散傅立叶变换 。
傅里叶解析傅立叶变换
定义
f(t)满足傅立叶积分定理条件时,下图①式的积分运算称为f(t)的傅立叶变换,②式的积分运算叫做F(ω)的傅立叶逆变换 。F(ω)叫做f(t)的象函数,f(t)叫做F(ω)的象原函数 。应用
推荐阅读
- 月夜直播电脑,月夜直播电脑配置要求
- 喜欢拍摄什么视频,喜欢拍摄什么视频的女生
- 手机如何加入视频号粉丝团,怎么加入微信视频号粉丝团
- 怎么传送数据到电视,电视怎么往手机传东西
- 写好java代码如何编译 java代码编译java文件
- 小程序劲爆小视频素材下载,小程序劲爆小视频素材下载
- 虚拟机和主机同时,虚拟机可以和主机共用
- xr怎么更新ios16.1.1,xr怎么更新ios14
- go语言好就业吗 go语言值不值得学