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个梯度值计算完成:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架