没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
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页未读,继续阅读
资源评论
平头哥在等你
- 粉丝: 1579
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 【毕业设计】基于python联邦深度强化学习的无人驾驶决策与控制源码+模型+超详细注释+项目说明.zip
- 【毕业设计】基于SpringBoot开发的酒店管理系统源码.zip
- 【毕业设计】基于spark电商用户行为分析大数据平台源码.zip
- 【毕业设计】基于SpringBoo+Vue微麦电影购票小程序源码.zip
- 【毕业设计】基于SSM框架和微信小程序开发的民宿酒店管理系统源码.zip
- 【毕业设计】基于SSM的点餐外卖配送系统(点餐系统、外卖系统、配送系统、校园点餐).zip
- DeepSeek-V3技术报告
- 实验室设备管理系统(Laboratory-Equipment-Management-System).zip
- 【毕业设计】基于SSM和SpringBoot的动态旅游网站.zip
- 【毕业设计】基于STC12C5A、SIM800C、GPS的汽车防盗报警系统源码.zip
- DS18B20温度计程序
- pytnon搭建智能聊天机器人
- 【毕业设计】基于STM32+QT上位机云之手WIFI DTU源码.zip
- 【毕业设计】基于STM32熔融沉积成型打印机主控代码.zip
- 【毕业设计】基于yolov3+kcf实现安全帽检测和追踪tensorflow源码+模型+使用说明.zip
- 【毕业设计】基于STM32实现iLook.Time产品级项目源码.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功