📄 subject_15958.htm
字号:
<p>
序号:15958 发表者:小誉 发表日期:2002-09-24 10:59:34
<br>主题:哪里有快速傅立叶变换的书或电子书?
<br>内容:哪里有快速傅立叶变换的书或电子书?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:光阴似剑 回复日期:2002-09-24 12:01:04
<br>内容:《C常用算法程序集》(第二版)<BR><BR><BR> #include "math.h"<BR> void kkfft(pr,pi,n,k,fr,fi,l,il)<BR> int n,k,l,il;<BR> double pr[],pi[],fr[],fi[];<BR> { int it,m,is,i,j,nv,l0;<BR> double p,q,s,vr,vi,poddr,poddi;<BR> for (it=0; it<=n-1; it++)<BR> { m=it; is=0;<BR> for (i=0; i<=k-1; i++)<BR> { j=m/2; is=2*is+(m-2*j); m=j;}<BR> fr[it]=pr[is]; fi[it]=pi[is];<BR> }<BR> pr[0]=1.0; pi[0]=0.0;<BR> p=6.283185306/(1.0*n);<BR> pr[1]=cos(p); pi[1]=-sin(p);<BR> if (l!=0) pi[1]=-pi[1];<BR> for (i=2; i<=n-1; i++)<BR> { p=pr[i-1]*pr[1]; q=pi[i-1]*pi[1];<BR> s=(pr[i-1]+pi[i-1])*(pr[1]+pi[1]);<BR> pr[i]=p-q; pi[i]=s-p-q;<BR> }<BR> for (it=0; it<=n-2; it=it+2)<BR> { vr=fr[it]; vi=fi[it];<BR> fr[it]=vr+fr[it+1]; fi[it]=vi+fi[it+1];<BR> fr[it+1]=vr-fr[it+1]; fi[it+1]=vi-fi[it+1];<BR> }<BR> m=n/2; nv=2;<BR> for (l0=k-2; l0>=0; l0--)<BR> { m=m/2; nv=2*nv;<BR> for (it=0; it<=(m-1)*nv; it=it+nv)<BR> for (j=0; j<=(nv/2)-1; j++)<BR> { p=pr[m*j]*fr[it+j+nv/2];<BR> q=pi[m*j]*fi[it+j+nv/2];<BR> s=pr[m*j]+pi[m*j];<BR> s=s*(fr[it+j+nv/2]+fi[it+j+nv/2]);<BR> poddr=p-q; poddi=s-p-q;<BR> fr[it+j+nv/2]=fr[it+j]-poddr;<BR> fi[it+j+nv/2]=fi[it+j]-poddi;<BR> fr[it+j]=fr[it+j]+poddr;<BR> fi[it+j]=fi[it+j]+poddi;<BR> }<BR> }<BR> if (l!=0)<BR> for (i=0; i<=n-1; i++)<BR> { fr[i]=fr[i]/(1.0*n);<BR> fi[i]=fi[i]/(1.0*n);<BR> }<BR> if (il!=0)<BR> for (i=0; i<=n-1; i++)<BR> { pr[i]=sqrt(fr[i]*fr[i]+fi[i]*fi[i]);<BR> if (fabs(fr[i])<0.000001*fabs(fi[i]))<BR> { if ((fi[i]*fr[i])>0) pi[i]=90.0;<BR> else pi[i]=-90.0;<BR> }<BR> else<BR> pi[i]=atan(fi[i]/fr[i])*360.0/6.283185306;<BR> }<BR> return;<BR> }
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:小不点 回复日期:2002-10-15 16:23:07
<br>内容:傅立叶变换出来的结果怎么解释啊 ~!时域的离散数值经过FFT之后生成一系列频域的离散数值。这些频域里的离散数值上的各点频率怎么来计算确定啊。也就是该程序变换之后的点是按照什么顺序排列的?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -