资源简介
C语言实现计算DFT的程序,有部分注释,子函数与主函数分布
代码片段和文件信息
#include
#include
void dft(double x[]double y[]double a[]double b[]int nint sign)
////计算复序列的离散傅立叶变换(DFT)和离散傅立叶反变换(IDFT)
//n为数据长度
//x为输入序列的实部;y为输入序列的虚部
//a为变换结果的实部;y为变换结果的虚部
//sign=1为DFT,sign=-1为IDFT
{
int ik;
double cdqws;
q=6.28318530718/n;
for (k=0;k {
w=k*q;
a[k]=b[k]=0.0;
for (i=0;i {
d=i*w;
c=cos(d);
s=sin(d)*sign;
a[k]+=c*x[i]+s*y[i];
b[k]+=c*y[i]-s*x[i];
}
}
if (sign==-1)
{
c=1.0/n;
for (k=0;k {
a[k]=c*a[k];
b[k]=c*b[k];
}
}
}
main()
{
int ijn;
double a1a2cc1c2d1d2q1q2ww1w2;
double x[32]y[32]a[32]b[32];
n=32;
a1=0.9;
a2=0.3;
x[0]=1.0;
y[0]=0.0;
for (i=1;i {
x[i]=a1*x[i-1]-a2*y[i-1];
y[i]=a2*x[i-1]+a1*y[i-1];
}
printf(“\n输入原始序列x(n):\n“);
for (i=0;i {
for (j=0;j<2;j++)
评论
共有 条评论