- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一、实验目的
1.利用 MATLAB 编写 FFT 快速傅里叶变换。
2. 比较编写的 myfft 程序运算结果与 MATLAB 中的 FFT 的有无误差。
二、实验条件
PC 机, MATLAB7.0
三、实验原理
1. FFT (快速傅里叶变换)原理:
将一个 N 点的计算分解为两个 N/2 点的计算,每个 N/2 点的计算再进一步分解
为 N/4 点的计算,以此类推。根据 DFT 的定义式,将信号 x[n] 根据采样号 n 分解为
偶采样点和奇采样点。设偶采样序列为 y[n]=x[2n] ,奇采样序列为 z[n]=x[2n+1] 。
j 2 k / N
k
上式中的 WN 为旋转因子 e 。下式则为 y[n] 与 z[n] 的表达式:
2. 蝶形变换的原理:
下图给出了蝶形变换的运算流图,可由两个 N/2 点的 FFT (Y[k] 和 Z[k] 得出 N
点 FFT X[k] )。同理,每个 N/2 点的 FFT 可以由两个 N/4 点的 FFT 求得。按这种方
法,该过程可延迟后推到 2 点的 FFT。
下图为 N=8 的分解过程。图中最右边的为 8 个时域采样点的 8 点 FFTX[k] ,由偶编
号采样点的 4 点 FFT 和奇编号采样点的 4 点得到。这 4 点偶编号又由偶编号的偶采
样点的 2 点 FFT 和奇编号的偶采样点的 2 点 FFT 产生。相同的 4 点奇编号也是如此。
依次往左都可以用相同的方法算出, 最后由偶编号的奇采样点和奇编号的偶采样点的
2 点 FFT 算出。图中没 2 点 FFT 成为蝶形,第一级需要每组一个蝶形的 4 组,第二
级有每组两个蝶形的两组,最后一级需要一组 4 个蝶形。
四、实验内容
N
1.定义函数 disbutterfly ,程序根据 FFT 的定义: y[ n] x[n] x[n ] 、
2
N n
z[n] ( x[ n] x[n ])WN ,将序列 x 分解为偶采样点 y 和奇采样点 z 。
2
function [y,z]=disbutterfly(x)
N=length(x);
n=0:N/2-1;
w=exp(-2*1i*pi/N).^n;
x1=x(n+1);
x2=x(n+1+N/2);
y=x1+x2;
z=(x1-x2).*w;
2.定义函数 rader ,纠正输出序列的输出顺序。
function y=rader(x,N)
n=[0:N-1];
bn=dec2bin(n);
rbn=fliplr(bn);
rn=bin2dec(rbn);
y=x(rn+1);
3.定义函数 myfft ,程序中套了两个循环。
function X=myfft(x)
N=length(x);
h=log2(N); %h=3
for i=1:h %第一次 i=1; 第二次 i=2
s=[];
for
原创力文档


文档评论(0)