資源簡(jiǎn)介
C語(yǔ)言實(shí)現(xiàn)計(jì)算DFT的程序,有部分注釋,子函數(shù)與主函數(shù)分布
代碼片段和文件信息
#include
#include
void?dft(double?x[]double?y[]double?a[]double?b[]int?nint?sign)
////計(jì)算復(fù)序列的離散傅立葉變換(DFT)和離散傅立葉反變換(IDFT)
//n為數(shù)據(jù)長(zhǎng)度
//x為輸入序列的實(shí)部;y為輸入序列的虛部
//a為變換結(jié)果的實(shí)部;y為變換結(jié)果的虛部
//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++)
評(píng)論
共有 條評(píng)論