【FFT】信号处理——快速傅里叶变换【通俗易懂】

devtools/2024/9/24 9:34:42/

快速傅里叶变换(Fast Fourier Transform, FFT)是一种用于将信号从时间域转换到频率的算法。

傅里叶变换的核心思想是:任何周期性信号都可以分解成多个不同频率的正弦波或余弦波的叠加

简单来说,FFT可以帮助我们理解一个信号的频率成分,即它由哪些频率组成,每个频率对应的振幅是多少,如下图所示。

1、时间转换为频率

假设我们有一个随时间变化的信号(例如音乐、心跳信号、电压波形等),这个信号可以用一系列数值来表示,比如一个音频文件中的采样值。在时间域,信号随时间变化,而通过傅里叶变换,我们可以将这些时间域的信号转换为频率域的表示。

具体步骤如下:

①采样:首先,我们需要对时间信号进行采样,得到一系列离散的数值点。假设采样频率是 fs,采样点数是 N,即我们有 N 个采样值。

②计算频率分量FFT 将这些采样点转换为频率域的分量。结果是一个复数序列,其中每个复数值对应一个频率分量。FFT 的结果告诉我们信号中不同频率的“权重”是多少。

频率分辨率FFT 结果中的每个点对应一个频率值。计算方式为:

其中,fs​ 是采样频率,N 是采样点数。这个 Δf 是频率分辨率,即每个频率分量之间的间隔。

频率范围FFT 的输出频率范围是从 0 到 fs/2(即采样频率的一半),这是因为奈奎斯特定理表明,采样频率必须是最高频率分量的两倍,才能避免混叠。

2、幅值计算

FFT 的输出结果是复数形式,表示频率分量的振幅和相位。每个频率分量的幅值(或叫“强度”)可以通过复数的模计算出来。对于复数 Z=a+bi,其模可以表示为:

具体步骤:

FFT 输出的复数形式FFT 的结果是频率分量的复数形式 X(f),其中实部 a 和虚部 b 分别表示余弦和正弦分量的系数。

②计算幅值:我们对每个复数值计算其模,即:

 这个模值就是每个频率分量对应的幅值,也可以理解为该频率在信号中的“强度”或“能量”。

幅值归一化:通常,FFT 输出的幅值需要除以采样点数 N 才能得到正确的幅值大小,尤其是当信号是周期性的或者我们对幅值的绝对大小感兴趣时。即:

3、总结

FFT 是一种将时间域信号转换为频率域信号的高效算法。

时间信号通过采样得到离散的数据点,FFT 将这些数据点转换成不同频率分量的复数值。

每个频率分量的幅值(即“强度”)可以通过计算复数的模得到,而频率则是由采样频率和采样点数决定的。

频率域的表示让我们能够理解信号中包含了哪些频率成分,以及每个频率成分的强度如何。


http://www.ppmy.cn/devtools/116427.html

相关文章

【数据结构-栈】力扣844. 比较含退格的字符串

给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。 注意:如果对空文本输入退格字符,文本继续为空。 示例 1: 输入:s “ab#c”, t “…

Python爬虫之requests模块(一)

Python爬虫之requests模块(一) 学完urllib之后对爬虫应该有一定的了解了,随后就来学习鼎鼎有名的requests模块吧。 一、requests简介。 1、什么是request模块? requests其实就是py原生的一个基于网络请求的模块,模拟…

Docker:解决开发运维问题的开源容器化平台

云计算de小白 Docker是一个开源的容器化平台,可以将应用程序及其依赖的环境打包成轻量级、可移植的容器。 Docker为什么这么受欢迎呢?原因很简单:Docker可以解决不同环境一致运行的问题,而且占用资源少,速度快。 所以好的东西…

PostgreSQL 容器安装

使用Docker安装PostgreSQL(通常简称为PgSQL)容器的步骤相对直接且简单。以下是一个详细的步骤指南,帮助你通过Docker安装并运行PostgreSQL容器: 1. 安装Docker 首先,确保系统上已经安装了Docker。可以通过访问Docker…

《深度学习》卷积神经网络CNN 实现手写数字识别

目录 一、卷积神经网络CNN 1、什么是CNN 2、核心 3、构造 二、案例实现 1、下载训练集、测试集 代码实现如下: 2、展示部分图片 运行结果: 3、图片打包 运行结果: 4、判断当前使用的CPU还是GPU 5、定义卷积神经网络 运行结果&a…

Vue3教程 - 2 开发环境搭建

更好的阅读体验:点这里 ( www.foooor.com ) 2 开发环境搭建 要进行 Vue 开发,需要安装 Node.js,因为构建 Vue 项目的工具,例如 Webpack、Vite等,这些工具依赖于Node.js环境来运行。 Node.js…

当电子设计竞赛照进生活!

参加过电子设计竞赛的同学都懂,四天三夜,有时候会熬夜,有时候会加班, 电子的灵异事件,有时候是好的,有时候是坏的,这就很怪好嘛 按理说,代码写的也没问题啊 为什么还是会那样&…

【FPGA开发】比特文件的压缩

压缩比特文件介绍 对于FPGA而言,比特文件包含了FPGA芯片的配置信息,也是我们一般意义上下载进FPGA的“程序”,压缩比特文件是一种优化FPGA配置文件大小和提高配置效率的方法,特别对于一些复杂的设计以及一些芯片而言,如…