当前位置:   article > 正文

c语言改变数组顺序,傅里叶变换C语言程序问题:为什么我改变输入数组的输入顺序,或是改掉几个数据最后的对应的结果就不一样了...

定义数组前后次序不同结果不同的原因

#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;i=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;

}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/112255
推荐阅读
相关标签
  

闽ICP备14008679号