数字信号处理 基于8点的dif-fft变换

更新时间:2023-10-09 02:55:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数字信号处理

一、 设计目的及意义

(1)、掌握实现基2-DIF-FFT算法的方法

(2)、掌握Maltlab的基本使用方法,初步具有使用Maltlab编程的能力

二、 设计原理

2.1 FFT简介

离散傅里叶变换(DFT)

正变换:X(k)?DFT[x(n)]??x(n)WN

n?0N?1nkn=0,1,2…,N-1 n=0,1,2…,N-1

1N?1?nk逆变换:x(n)?IDFT[x(n)]??X(k)WN

Nk?02.2 按频率抽选的FFT算法

FFT算法主要有两种,按时间抽选的FFT的算法(DIT-FFT)和按频率抽选的FFT算法(DIF-FFT)。这里主要介绍DIF-FFT。

DIF-FFT算法是将输入序列x(k)分成前后两个部分。

X(k)??x(n)WN?n?0N?12n?0N?1nk?x(n)Wn?0N?12nkN??x(n)Wn?N2N?1nkN??x(n)WNn?0N?1nkNNk(n?)??x(n?)WN22n?0N?1??[x(n)?x(n?N/2NNk/2nk)WN]WN2

由于WN??1,则WNN?12n?0Nk/2?(?1)k?1?? k为偶数 ??1所以X(k)??[x(n)?(?1)x(n?kNnk)]WN 2?k?2rK为偶数

把k按奇数和偶数分,?

k为奇数 k?2r?1?将X(k)分为两部分:X(2r?1)??[x(n)?x(n?n?0N?12n?0N?12r=0,1,…N/2-1

Nnrn)]WNWN/2 2X(2r)??[x(n)?x(n?Nnr)]WN/2 2令x1?x(n)?x(n?N?12NNn),x2?[x(n)?x(n?)]WN,可得 22?rnX(2r)??x1(n)WN/2???n?0?,r=0,1,2,…,N/2-1 N?1?2rnX(2r?1)??x2(n)WN/2??n?0?由此可得频率抽选法蝶形运算单元,如图2.1所示

x(n)Nx(n?)2nWNx1?x(n)?x(n?N)2Nn)]WN2

x2?[x(n)?x(n?图2.1频率抽选法蝶形运算单元

这样可以把一个N点DFT分解为两个N/2点DFT的组合,两个N/2点DFT还可以继续分解,设N=2M,则经过M-1次分解,最后可以分解成为N/2个两点DFT,可以由一个蝶形运算来求解。例如8点DIF-FFT蝶形运算图如图2.2

图2.2 8点DIF-FFT运算流图。

输出序列的排列规律不是从小到大按顺序的,而是按照倒叙规则排序的,即先将0-7转换为二进制数,然后将二进制数左右倒序,再转为十进制就可以得到新的数列,即:0,4,2,6,1,5,3,7。

2.3 程序流程图

开始

设定输入序求出蝶形运算级数m=3

循环mm=1到3级蝶形Y 求该级旋转因子下标Nm N 循环该级1到2mm-1组蝶形运Y 循环该组1到23-mm个蝶形运Y 计算一个蝶形运算单元 N N 序列倒序后绘图 结束 图2.3 程序流程图

三、 程序及结果

3.1 直接调用FFT函数源程序

以下是直接调用Matlab自带的FFT函数计算的源程序,其输入序列为x=[0 2 4 6 0 2 4 6],求出FFT结果y=X(k)后对其幅值和原序列进行绘图。

N=8;

?T点数为8点 %横坐标序列

n=0:N-1;

x=[0 2 4 6 0 2 4 6 ]; y=fft(x,N)

%设定输入x(n)序列

%调用FFT函数求X(k)序列,y=X(k)

mag=abs(y); subplot(2,1,1); stem(n,x);

%求幅值

%绘制原序列

title('输入序列x(n)'); subplot(2,1,2); stem(n,mag);

%绘制X(k)序列

title('8点调用FFT函数计算结果')

3.2 FFT计算源程序

以下是本次课程设计编写的FFT计算程序,输入序列和5.1的程序一样,都是x=[0 2 4 6 0 2 4 6],y等于FFT输出序列X(k),最后对y的幅值和原序列进行绘图。

N=8;

%设定FFT点数为8点 %横坐标序列

n=0:N-1;

x=[0 2 4 6 0 2 4 6 ]; x1=x;

%设定输入序列x(n)

%暂存x序列到x1 %求蝶形运算级数m

m=log2(N); for mm=1:m

%循环mm=1到3级蝶形运算 %求该级旋转因子下标Nm,Nm=8,4,2

Nm=2^(m-mm+1);

for p=0:Nm:N-1 %循环该级1到2mm-1组蝶形运算 for k=1:Nm/2 %循环该组1到23-mm个蝶形运算 kp=k+Nm/2+p; a=x(kp);

%确定蝶形运算对应单元下标 %暂存x(xp)

本文来源:https://www.bwwdw.com/article/uxcf.html

Top