⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_15958.htm

📁 一些关于vc的问答
💻 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>&nbsp;&nbsp;#include "math.h"<BR>&nbsp;&nbsp;void kkfft(pr,pi,n,k,fr,fi,l,il)<BR>&nbsp;&nbsp;int n,k,l,il;<BR>&nbsp;&nbsp;double pr[],pi[],fr[],fi[];<BR>&nbsp;&nbsp;{ int it,m,is,i,j,nv,l0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;double p,q,s,vr,vi,poddr,poddi;<BR>&nbsp;&nbsp;&nbsp;&nbsp;for (it=0; it&lt;=n-1; it++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ m=it; is=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i=0; i&lt;=k-1; i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ j=m/2; is=2*is+(m-2*j); m=j;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fr[it]=pr[is]; fi[it]=pi[is];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;pr[0]=1.0; pi[0]=0.0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;p=6.283185306/(1.0*n);<BR>&nbsp;&nbsp;&nbsp;&nbsp;pr[1]=cos(p); pi[1]=-sin(p);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (l!=0) pi[1]=-pi[1];<BR>&nbsp;&nbsp;&nbsp;&nbsp;for (i=2; i&lt;=n-1; i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ p=pr[i-1]*pr[1]; q=pi[i-1]*pi[1];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s=(pr[i-1]+pi[i-1])*(pr[1]+pi[1]);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pr[i]=p-q; pi[i]=s-p-q;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;for (it=0; it&lt;=n-2; it=it+2)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ vr=fr[it]; vi=fi[it];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fr[it]=vr+fr[it+1]; fi[it]=vi+fi[it+1];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fr[it+1]=vr-fr[it+1]; fi[it+1]=vi-fi[it+1];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;m=n/2; nv=2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;for (l0=k-2; l0&gt;=0; l0--)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ m=m/2; nv=2*nv;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (it=0; it&lt;=(m-1)*nv; it=it+nv)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (j=0; j&lt;=(nv/2)-1; j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ p=pr[m*j]*fr[it+j+nv/2];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q=pi[m*j]*fi[it+j+nv/2];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s=pr[m*j]+pi[m*j];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s=s*(fr[it+j+nv/2]+fi[it+j+nv/2]);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poddr=p-q; poddi=s-p-q;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fr[it+j+nv/2]=fr[it+j]-poddr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi[it+j+nv/2]=fi[it+j]-poddi;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fr[it+j]=fr[it+j]+poddr;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi[it+j]=fi[it+j]+poddi;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (l!=0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i=0; i&lt;=n-1; i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ fr[i]=fr[i]/(1.0*n);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi[i]=fi[i]/(1.0*n);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (il!=0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i=0; i&lt;=n-1; i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ pr[i]=sqrt(fr[i]*fr[i]+fi[i]*fi[i]);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (fabs(fr[i])&lt;0.000001*fabs(fi[i]))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ if ((fi[i]*fr[i])&gt;0) pi[i]=90.0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else pi[i]=-90.0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pi[i]=atan(fi[i]/fr[i])*360.0/6.283185306;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>&nbsp;&nbsp;}
<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 + -