DFT计算过程详解
DFT计算过程详解
平时工作中,我们在计算傅里叶变换时,通常会直接调用Matlab中的FFT函数,或者是其他编程语言中已经为我们封装好的函数,很少去探究具体的计算过程,本文以一个具体的例子,向你一步一步展示DFT的计算过程。
众所周知,傅里叶变换的计算公式为:

对时域信号进行离散化:

根据欧拉定理:

DFT方程改写为:

为第m个DFT输出值,
为采样点输入,
假设N=4:

则:
m=0

m=1

m=2

m=3

这里需要补充一个采样率的概念。
假设对原始信号的采样率为:

对原始信号做16点DFT进行分析,则基频为:

则:
X(0) = 1st frequency term ,with analysis frequency = 0 .31.25 = 0Hz;
X(1) = 2nd frequency term ,with analysis frequency = 1.31.25 = 31.25Hz;
X(2) = 3rd frequency term ,with analysis frequency = 2 .31.25 = 62.5Hz;
X(3) = 4th frequency term ,with analysis frequency = 3 .31.25 = 93.75Hz;
分析频率的公式可以计为:

下面进入正题,对一个特定信号进行DFT分析。
原始信号为:

可以看出此信号包含1kHz和2kHz的信号,现在一步一步的对此信号做8点DFT分析。
假设采样率为
,即每
秒采集一个点,由于N=8,因此我们需要8个输入采样点来计算DFT,即对原始信号进行离散化为:

如果采样率samples/s,则DFT的结果将计算的是输入信号x(n)在分析频率,0KHz,1kHz,2KHz,...,7kHz处的梯度值。
则:

当m=1时,即计算原始信号在1kHz下的梯度值:


当m=2时,即计算原始信号在2kHz下的梯度值:

当m=3时,即计算原始信号在3kHz下的梯度值:

当m=4时,即计算原始信号在4kHz下的梯度值:

当m=5时,即计算原始信号在5kHz下的梯度值:

当m=6时,即计算原始信号在6kHz下的梯度值:

当m=7时,即计算原始信号在7kHz下的梯度值:

即8个梯度值计算完成:

DFT计算过程详解的更多相关文章
- Hadoop MapReduce执行过程详解(带hadoop例子)
https://my.oschina.net/itblog/blog/275294 摘要: 本文通过一个例子,详细介绍Hadoop 的 MapReduce过程. 分析MapReduce执行过程 Map ...
- Linux启动过程详解(inittab、rc.sysinit、rcX.d、rc.local)
启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬 ...
- Linux启动过程详解
Linux启动过程详解 附上两张图,加深记忆 图1: 图2: 第一张图比较简洁明了,下面对第一张图的步骤进行详解: 加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的 ...
- ping命令执行过程详解
[TOC] ping命令执行过程详解 机器A ping 机器B 同一网段 ping通知系统建立一个固定格式的ICMP请求数据包 ICMP协议打包这个数据包和机器B的IP地址转交给IP协议层(一组后台运 ...
- Hadoop Mapreduce分区、分组、二次排序过程详解[转]
原文地址:Hadoop Mapreduce分区.分组.二次排序过程详解[转]作者: 徐海蛟 教学用途 1.MapReduce中数据流动 (1)最简单的过程: map - reduce (2) ...
- Android中mesure过程详解
我们在编写layout的xml文件时会碰到layout_width和layout_height两个属性,对于这两个属性我们有三种选择:赋值成具体的数值,match_parent或者wrap_conte ...
- Hadoop学习之Mapreduce执行过程详解
一.MapReduce执行过程 MapReduce运行时,首先通过Map读取HDFS中的数据,然后经过拆分,将每个文件中的每行数据分拆成键值对,最后输出作为Reduce的输入,大体执行流程如下图所示: ...
- mysql中SQL执行过程详解与用于预处理语句的SQL语法
mysql中SQL执行过程详解 客户端发送一条查询给服务器: 服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果.否则进入下一阶段. 服务器段进行SQL解析.预处理,在优化器生成对应的 ...
- SSL/TLS 握手过程详解
在现代社会,互联网已经渗透到人们日常生活的方方面面,娱乐.经济.社会关系等都离不开互联网的帮助.在这个背景下,互联网安全就显得十分重要,没有提供足够的安全保障,人们是不会如此依赖它的.幸运的是,在大牛 ...
随机推荐
- sqli-labs less-17 --> less-20
Less-17 (报错盲注) 参考资料1:https://www.cnblogs.com/AmoBlogs/p/8673748.html
- Java锁机制深入理解
Java锁机制 背景知识 指令流水线 CPU的基本工作是执行存储的指令序列,即程序.程序的执行过程实际上是不断地取出指令.分析指令.执行指令的过程. 几乎所有的冯•诺伊曼型计算机的CPU,其工 ...
- java - synchronized与lock的区别
synchronized与lock的区别 原始构成 synchronized是关键字属于JVM层面 monitorenter(底层是通过monitor对象来完成,其实wait/notify等对象也依赖 ...
- os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)
centos 安装 elasticsearch的时候 因为 elasticsearch默认 需要 2G内存导致的镜像不能运行 解决方案 修改配置文件 find / -name jvm.options ...
- 占位 RK
占位 RK include: RK403 RK404
- 二分-B - Dating with girls(1)
B - Dating with girls(1) Everyone in the HDU knows that the number of boys is larger than the number ...
- 手机内存卡RAW无法格式化的解决办法
突然出现这个问题,这是麻烦: 网上找了各种办法:什么软件修复,disk等修复,创建新磁盘,新扇到,win自动修复啊:开始----运行框中输入 :convert X: /fs:FAT(X为电脑 ...
- markdown文本编辑学习笔记2
目录 1.删除线 2.无序列表 4 todo list 5分割符号 6 TOC自动生成目录 7 插入代码块 8 斜体.粗体.删除线.下划线.背景高亮 markdown编辑公式 1.删除线 ~~要删除的 ...
- 洛谷P1071 潜伏者
https://www.luogu.org/problem/P1071 #include<bits/stdc++.h> using namespace std; map<char,c ...
- 1052 Linked List Sorting (25分)
题目 1. 思路 使用map存放所有的地址对 使用起始地址遍历map,结果存放在vector中 排序vector 输出vector 2. 注意点 开始的时候起始地址为-1 可能有些节点没有用到,注意排 ...