【详细易懂】快速傅里叶变换(FFT)生成的频率、幅度具体求解过程

快速傅里叶变换的过程可以用一句话概括:

"通过计算,把信号的配方罗列出来"

即:已知一个时域的随时间变化的信号,该信号可以通过FFT拆分该信号,得到由该信号分解后得到的由不同频率及其幅度组成的频域图,其直观图如下图所示。

1、确定三个参数

这三个参数分别为采样频率Fs、信号最高频率F、采样点数N。

在这里我们假定已知信号最高频率F为600Hz,根据采样定理,我们设定采样频率为1400Hz。

采样定理:采样频率Fs > 信号频率的2倍

采样频率1400Hz即为一秒内有1400个采样点。

最后可得:N=1400 F=600Hz Fs=1400Hz

2、FFT求解生成的幅度
①进行FFT

在上述三个参数的基础上,我们进行FFT,得到 N 个复数。

每个复数都包含着各自特定频率的信息,根据这 N 个复数,我们可以得到原始信号拆分后的各个频率及其对应的幅度值,如下图所示(下图为双边振幅谱)

②求出复数的绝对值

但是直接用复数画出的图不是我们想要的,需要求出全部N个复数的绝对值(即模长),如下图所示,上图中的负数值没有了。

③归一化

最后对纵坐标的振幅需要进行归一化处理才能得到最终的幅度值。

上图中,横坐标为0Hz对应的信号强度(信号振幅),称为直流分量。它对应的振幅求解如下所示:

0Hz对应振幅 = 当前值 / 采样点数N

(即为直流分量对应振幅 = 14000 / 1400 = 10)

注意:直流分量以外的分量所对应的信号振幅求解与上述不太一样,如下所示:

其余频率对应的振幅 = 当前值 /(采样点数N / 2)

(即为:200Hz对应振幅 = 5000 / (1400 / 2) ≈ 7.14)

进行归一化后,我们最终得到如下图所示。

3、FFT求解生成的频率
①频率公式

我们进行FFT后得到的第x个(x从0开始)复数值对应的实际频率为

f(x) = x * (Fs / N)

-f(x) 为实际频率值

-x为第几个复数值

-Fs为采样频率

-N为采样点数

举例:

第0个点的频率 f(0) = 0 * (1400 / 1400) = 0

第1个点的频率 f(0) = 1 * (1400 / 1400) = 1

第2个点的频率 f(0) = 2 * (1400 / 1400) = 2

②删除重复值

由于FFT得到的结果是对称的,因此我们要删除一半的值,只有0 ~ N/2 这一半的频率是有效的,如下图所示。

相关推荐
Small___ming5 小时前
【人工智能基础】深度学习归一化层完全指南:从入门到精通
人工智能·深度学习·归一化
民乐团扒谱机10 天前
【微实验】仿AU音频编辑器开发实践:从零构建音频可视化工具
算法·c#·仿真·audio·fft·频谱
大熊背11 天前
RGB 色彩比例(R/(R+G+B)、G/(R+G+B)、B/(R+G+B))的核心含义与应用
分割·归一化
bu_shuo13 天前
simulink中使用fft进行频谱分析卡死可能的解决方法
matlab·simulink·fft·powergui
s090713622 天前
Xilinx 7系列FPGA的FFT IP核简介
fpga开发·zynq·fft
硬汉嵌入式24 天前
初步完成H7-TOOL的250M示波器功能自动频率测量
滤波·fft·频谱·h7-tool·250m示波器·自动频率测量
硬汉嵌入式1 个月前
H7-TOOL集成DSP数字信号量处理库,FFT注册添加成功
数字信号处理·dsp·fft·h7-tool
南檐巷上学2 个月前
Vivado调用FFT IP核进行数据频谱分析
fpga开发·fpga·vivado·fft·快速傅里叶变化
一条星星鱼2 个月前
从0到1:如何用统计学“看透”不同睡眠PSG数据集的差异(域偏差分析实战)
人工智能·深度学习·算法·概率论·归一化·睡眠psg
一条星星鱼3 个月前
深度学习中的归一化:从BN到LN到底是怎么工作的?
人工智能·深度学习·算法·归一化