习题四 快速傅里叶变换.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
习题四 快速傅里叶变换.doc

习题四 快速傅里叶变换 解: 解: ⑴ 直接计算: 复乘所需时间: 复加所需时间: ⑵用FFT计算: 复乘所需时间: 复加所需时间: 流图如下图所示: 由(1)式可得的路径,如下表所示: k 0 1 2 3 4 5 6 7 8 9 0.8 0.67 0.56 0.46 0.39 0.32 0.27 0.22 0.19 0.16 arg [] 10. 当实现按时间抽取快速傅立叶变换算法时,基本的蝶形计算 利用定点算术运算实现该蝶形计算时,通常假设所有数字都已按一定 比例因子化为小于1。因此在蝶形计算的过程中还必须关心溢出问题。 证明如果我们要求 则在蝶形计算中不可能出现溢出,即 似乎更容易些,也更适合些。问这些条件是否足以保证在蝶形 计算中不会出现溢出?请证明你的回答。 证明:(a) 解:(a) 若直接利用10点快速傅立叶变换算法,则: 将n为偶数与n为奇数的部分分开,可得: (b) 如考虑利用线性调频z变换算法, 则 我们希望利用一个单位抽样响应为N=50个抽样的有限冲激响应滤波 器来过滤一串很长的数据。要求利用重叠保留法通过快速傅立叶变换 来实现这种滤波器,为了做到这一点 ,则: 输入各段必须重叠P个抽样点?; 我们必须从每一段产生的输出中取出Q个抽样点,使这些从每一段得 到的抽样连接在一起时,得到的序列就是所要求的滤波输出。假设输 入的各段长度为100个抽样点,而离散傅立叶变换的长度为128点。 进一步假设,圆周卷积的输出序列标号是从n=0到n=127。 则:(a)求P ; (b)求Q; (c)求取出来的Q个点之起点和终点的标 号,即确定从圆周卷积的128点中要取出哪些点,去和前一段的 点衔接起来。 解: 由于用重叠保留法,如果冲激响应 h(n) 的点数为N点,则圆周卷积 结果的前面的(N-1)个点不代表线 性卷积结果。故每段重叠点数P为 P=N – 1 =50 – 1=49 (b) 每段点数为 27 =128,但其中只 有100个是有效输入数据,其余 28个点为补充的零值点。因而 各段的重叠而又有效的点数Q为 Q=100 – P=100 – 49 =51 (c) 每段128 个数据点中,取出来的 Q个点的序号为 n=49 到 n=99。 用这些点和前后段取出的相应点 连接起来,即可得到原来的长输 入序列。 另外,对于第一段数 据不存在前一 段问题,故在数据 之前必须加上P=N – 1 =49个 零值点,以免丢失数据。 13. 请用C语言编写程序: (1) 按频率抽取的FFT算法 (2) 分裂基FFT算法 解:(1) /*Free_Copy*/ /* C语言编写的频率抽取FFT算法(最大计算64点)*/ /* 输入: 序列点数、序列值 * / /* 输出: 序列FFT变换后的数值及反变换(应与原序列相同 ) */ #include conio.h #include math.h #include stdio.h #define N 64 #define PI 3.1415926 #define w0 (0.125*PI) #define Cmul(a,b,c) a.x=b.x*c.x-b.y*c.y;a.y=b.x*c.y+b.y*c.x; #define Cequal(a,b) a.x=b.x;a.y=b.y; #define Cadd(a,b,c) a.x=b.x+c.x;a.y=b.y+c.y; #define Csub(a,b,c) a.x=b.x-c.x;a.y=b.y-c.y; #define Wn(w,r) w.x=cos(2.0*PI*r/n);w.y=-sin(2.0*PI*r/n); struct comp { float x; float y; }; void main() { int i,j,nu2,nm1,n,m,le,le1,k,ip,z; int flag,f,n1; struct comp a[N],t,t1,w,d; float a_ipx,m1; printf(\nThis program is about FFT by DIF way. ); printf

文档评论(0)

wsh1288 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档