没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
1
用 matlab 实现 DFT FFT
目录
实验目的............................................................................................................................................2
实验内容............................................................................................................................................2
1.用 MATLAB 实现 DFT..................................................................................................................2
2.用 MATLAB 实现 FFT,分析有限离散序列的 FFT...................................................................3
3.通过分别计算时间,得出 DFT 与 FFT 的算法差异...............................................................7
实验原理............................................................................................................................................7
1. 离散傅里叶变换的快速算法 FFT..........................................................................................7
2. FFT 提高运算速度的原理......................................................................................................8
3. 理论分析 DFT 与 FFT 算法差异...........................................................................................10
实验步骤..........................................................................................................................................11
实验结果..........................................................................................................................................11
实验分析..........................................................................................................................................19
实验结论..........................................................................................................................................24
实验体会..........................................................................................................................................24
2
实验目的
1. 通过研究 DFT,FFT 性质,用语言实现 DFT, FFT。不使用 MATLAB 现有的 FFT 函数,
自己编写具体算法。
2. 掌握 FFT 基 2 时间抽选法,理解其提高减少乘法运算次数提高运算速度的原理。
3. 设计实验,得出 DFT 和 FFT 算法差异的证明,如复杂度等(精度、不同长度的序列
等)。
实验内容
1. 用 MATLAB 实现 DFT
N 点序列 x(n) 的 DFT 为:
X
(
k
)
=
𝑁
―
1
𝑛
=
0
x
(
n
)
W
nk
N
0
≤
k
≤
N
―
1
DFT 的矩阵为:
根据 DFT 公式与矩阵展开,通过 MATLAB 实现 DFT:
3
2.用 Matlab 实现 FFT
编程思想及程序框图:
原位计算
因为 DIT-FFT 与 DIF-FFT 的算法类似,这里我们以 DIT-FFT 为例。N=2
M
点的 FFT 共
进行 M 级运算,且每一级都由 N/2 个蝶形运算组成,后一级的节点数据由前一级同
处一条水平线位置的节点数据产生,所以我们同样可以将后一级的节点数据储存到
前一级的节点中,这样的方法叫做原位计算,它大大节省了内存资源,降低了成本,
简化了运算。
序列的倒序
无论是进行 DIT-FFT 还是 DIF-FFT 都需要进行倒序,包括输入倒序与输出倒序,以
一定的方式将数组进行重新排列。
倒序的方法: 首先由于 N=2
M
,我们就可以用 M 位二进制数来表示节点的顺序,并且
按照奇偶时域抽取。然后,如
图 1
所示,第一次按最低位 n0 的 0、1 值分解为奇偶
组,第二次按次低位 n1 的 0、1 值分解为奇偶组,以此类推。最后,所得二进制数
所对应的十进制数即为序列倒序后产生的序列。
图 1 序列倒序过程
倒序的 MATLAB 方法:
用雷德算法可以对输入信号序列进行倒序重排,流程图如下所示:
4
蝴蝶因子的变化规律
在 DIT-FFT 中,每一级都由 N/2 个蝶形运算构成,每个蝶形运算包含一个蝴蝶因子,
每一级的蝶形因子又有一定的变化规律:
设 L 表示自左而右的运算级次(L=1,2,3,…,M),序数 R,次数 K。
每个蝶形运算的两个输入量相距 B=2^(L-1)个点。
假设 N=8, 则 M=3,这时有:
L=1 时, B=1, S=N/2, R=0, K=1: N/2 则有 P=(K-1)*1,所以
W
P
N
=
W
J
N
, J=0,1,2,3
L=2 时, B=2, S=N/4, R=0: N/2:N-1, K=1: N/4 则有 P=(K-1)*2,所以
W
P
N
=
W
J
N/2
, J=0,2
L=3 时, B=4, S=N/8, R=0: N/4:N-1, K=1: N/8 则有 P=(K-1)*4,所以
W
P
N
=
W
J
N/4
, J=0
5
所以对于一般情况 N=2
M
,第 L 级的旋转因子为 P=(K-1)*B。
从而得到 DIT-FFT 的 Matlab 流程图:
剩余25页未读,继续阅读
资源评论
平头哥在等你
- 粉丝: 1373
- 资源: 7530
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于javaweb的网上拍卖系统,采用Spring + SpringMvc+Mysql + Hibernate+ JSP技术
- polygon-mumbai
- Chrome代理 switchyOmega
- GVC-全球价值链参与地位指数,基于ICIO表,(Wang等 2017a)计算方法
- 易语言ADS指纹浏览器管理工具
- 易语言奇易模块5.3.6
- cad定制家具平面图工具-(FG)门板覆盖柜体
- asp.net 原生js代码及HTML实现多文件分片上传功能(自定义上传文件大小、文件上传类型)
- whl@pip install pyaudio ERROR: Failed building wheel for pyaudio
- Constantsfd密钥和权限集合.kt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功