为什么使用傅里叶变换FFT变换的基本原理-飞外网

傅立叶变换是数字信号处理领域一种很重要的算法,可以将一个信号从时域变换到频域。傅立叶原理表明:任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。

根据原信号的不同类型,傅里叶变换可以分为四种类别:

(1)非周期性连续信号傅里叶变换

(2)周期性连续信号傅里叶级数

(3)非周期性离散信号离散时域傅里叶变换

(4)周期性离散信号离散傅里叶变换

快速傅里叶变换(FFT),是利用计算机计算离散傅里叶变换(DFT)的高效、快速计算方法的统称,但是它是基于复数的,复数DFT写成如下极坐标形式:


在复数傅里叶变换中,x[n]和X[k]都是复数数组,它包括正频率和负频率。K从0到N-1,0~N/2的频率为正值,N/2~N-1为负值。因为离散信号的频谱是周期性的,其周期等于抽样频率。所以N/2到N-1的频率和-N/2~0的频率是相同的。0点和N/2点的频率值为正负频率的分界。

我们设变换长度N = 2L,将x(n)按照n的奇偶分为两组
x1(r) = x(2r)
x2(r)= x(2r+1)

其中r=0,1,…,N/2-1,带入上述复数DFT变换的公式,得到X[k]:


在式子中X1(K)和X2(K)分别是x1(n)和x2(n)的N/2点DFT,因此它只能算出前一半的值,后一半利用


抽样定理表明:如果一个连续信号f(t),其最高截止频率为fm,如果用时间间隔为T≤1/(2*fm)的开关信号对f(t)进行时域抽样,则f(t)可以被样值信号唯一表示。即保证抽样频率fs≥2*fm,可以由抽样信号fs(t),恢复出原始信号f(t)。


通常把最低允许的抽样频率fs=2*fm称为“奈奎斯特频率”,把最大允许的抽样间隔Ts=1/(2*fm)称为“奈奎斯特间隔”。

3.FFT频谱分析

因为FFT是基于复数的,在计算FFT的时候会出现两种情况,输入的数据为实数和复数,实际当中输入信号x(n)一般都为实信号,即虚部为零。

(1)输入数据是实数

我们用matlab产生一个实正弦信号,如下:


正弦信号sin_data包含两个频点信号,f1=50Hz,f2=200Hz,采样频率fs=1024Hz,采样点数NFFT=1024,FFT之后结果为一个N点复数。每一个点对应着一个频率点,这个点的模值,就是该频率值下的幅度特性。所达到的频率分辨率为fd=fs/N=1024/1024=1Hz,某一点n所表示的频率为Fn=(n-1)*fs/N=n-1,每个点的模值是A的N/2倍,其中A为原始信号的峰值。FFT结果如下:


在频谱图中,前N/2个点有两个峰值,后N/2有两个峰值,是对称的。在上述中提到,FFT包含周期为2*pi的特性,在做FFT的时候得到的是[0,2*pi],包含一个完整的区间。正频率分布在[0,N/2]与[0,2*pi]对应,N/2+1是正负频率的分界点,表示的频率为奈奎斯特采样频率的半,负频率分布在[N/2+1,N-1]与[pi,2*pi]相对应,[pi,2*pi]就等同于[-pi,0],负频率没有物理意义,把上述频谱图做调整之后如下:


在做实数FFT时,往往将0~N/2点的值作为实际的频谱,由于正负频率幅值分量各占一半,幅值需要扩大2倍。


我们用matlab产生一个和上述信号一样频率的复数信号,并观察其FFT之后的频谱,如下所示:


在做复数FFT的时候,只会有两个峰值,对应两个频率,且每个点的模值是A的N倍,A为原始信号的峰值。其实当我们输入指数形式的信号时,它包含实部和虚部两个信号,即x(n)=cos(n)+j*sin(n)。相当于是两个频谱的叠加,cos(n)产生一个频谱,j*sin(n)产生一个频谱,二者相互叠加,并不是没有了负频率,而是负频率相互抵消,正频率的幅值扩大了二倍。


(3)在实际中,通过FFT计算得到频点信息往往和信号的频点信息不相同,会有误差,这就取决于频谱的分辨率,例如:当fs=1000Hz的时候fd=fs/N=1000/1024=0.97Hz,因为f1=50Hz,f2=200Hz不是fd的整数倍,所以FFT的频谱中不包含这两个频点,只有其周围相接近的整数倍频点,通过FFT得到的频谱如下:


频率分辨率也叫做两个相邻谱峰分开的能力,指分辨两个不同频率信号的最小间隔。我们用matlab产生一个余弦波信号(频率分别为1MHz和1.05MHz),幅值都为1,采样频率fs=100MHz,采样点数N=1000,对这1000个数据点做FFT得到频谱如下:


可以发现频谱点稀疏,在1MHz附近无法将1MHz和1.05 MHz的两个频率分开,频率成分无法被区分,一般由于频率分辨率不够造成的。

频率分辨率大致有两种类型,一种叫波形分辨率,由原始数据的时间长度决定:

另一种叫视觉分辨率或FFT分辨率,由采样频率和参与FFT的数据点数决定:

区分不同频率成分,是为了在数据点数不是以2为基数的整数次方是对原始数据进行“补零”操作。如果直接对原始数据做FFT,这两种频率分辨率是相等的。

(1)补零

现在对原始数据进行“补零”操作,在采样点1000个原始数据后面补充零达到7000个数据点,再对其做FFT,结果如下图所示:


可以发现频谱点密集了很多,但是在1MHz附近仍无法将两个频率成分分开,所以,虽然我们补了很多的零,但是波形分辨率仍然为1/T1 = 100kHz,大于1MHz和1.05MHz这两个频率成分之间的距离50kHz。时域补零相当于频域插值,也就是说,补零操作增加了频域的插值点数,使得频域曲线看起来更加光滑,增加了FFT频率分辨率。

(2)增加数据时间长度

在采样频率不变的情况下,想要分辨这两个频率,必须要改变波形的分辨率,也就是延长原始数据的时间长度,现在我们以同样的采样频率对信号采7000个点作为原始信号,然后对齐做FFT,得到的结果如下:


此时的波形分辨率为1/T2=14kHz,小于50KHz,可以看到有两个明显的峰值,但是会发现1MHz对应的幅值为1,与原信号中该频率成分的幅值一致,但1.05MHz对应的幅值明显低于1,这就是所谓的频谱泄露。使得在1MHz处有谱线存在,在1.05MHz处没有谱线存在,使测量结果偏离实际值,同时在实际频率点的能量分散到其它频率点上。

(3)为了解决这个问题,我们可以设法使得谱线同时经过1MHz和1.05MHz这两个频点,找到他们的最大公约数50kHz,用FFT分辨率计算得到FFT数据点数2000,但是我们的数据点已经有7000了,我们对点数扩大四倍到8000点,也就是补1000个零。这时FFT分辨率为12.5kHz,所以谱线同时经过1MHz和1.05MHz这两个频率点,对其做FFT结果如下:


PWM不同占空比,在频率上会有不同的频率信息,我们可以把我们的信息调制到PWM信号的脉宽上,这就是P.... 要长高 发表于 06-08 16:15 • 1164次
如何使用MSO8000系列数字示波器的FFT功能 示波器是用来观察时域波形的重要仪器,但是示波器FFT功能的存在,使得示波器可以被当做一个简易的频谱仪.... 普源精电RIGOL 发表于 06-08 11:17 • 204次
请问使用ch552芯片做fft快算换是否可以? 需要注意哪些问题?可以实时支持音乐频谱转换获取?最快的速率是多少? 发表于 05-12 06:08 •
使用STM32的DSP库进行FFT变换 // Comment the lines that you don‘t want to use..... 发表于 04-20 16:53 • 126次
摘要:在对FFT(快速傅立叶变换)算法进行研究的基础上,描述了用FPGA实现FFT的方法,并对其中的.... FPGA之家 发表于 04-12 19:28 • 999次
随着技术的发展,数据越来越多样化,不再以单一的形式存在,例如一段录音可被分解成若干种信息,而快速傅立.... ZLG致远电子 发表于 04-01 11:01 • 1265次
赫维赛德之所以这么做,是因为他的“物理直觉”告诉他这么做,就是这么硬。这显然是一种开外挂的行为,因此.... 新机器视觉 发表于 03-15 14:08 • 537次
傅里叶逆变换就是傅里叶变换的逆过程,在F(ω)和求内积的时候,F(ω)只有t时刻的分量内积才会有结果.... 电磁兼容EMC 发表于 03-14 10:14 • 855次
如何通过模拟开关CD4051芯片改变反馈电阻来选择放大器增益 博主第一次写博客,没什么经验。有什么不妥的地方,欢迎提出指正。最近在做课设,学校的要求比较简单。用一个运放搭一个放大器电... 发表于 01-14 06:49 • 309次
基于K60开发板的FFT用于信号的频谱分析 FFT用于信号的频谱分析,本项目基于K60开发板(渡鸦)。##信号采集在测试初期的信号采集选择了用K60片上ADC以单端模式对... 发表于 01-10 07:05 • 546次
STM32F103+全彩LED显示屏+万年历闹钟+FFT音频频谱制作 1.硬件总体框图工作原理:电脑,手机等外部设备3.5mm耳机孔输出音频信号,经过继电器模块的音源选择.... 发表于 12-29 19:03 • 112次
录音机调试第三天 关于毕设的一些调试感悟系列1.硬件平台的搭建用的完全是正点原子的硬件平台-阿波罗(STM32H743.... 发表于 12-27 19:17 •
录音机调试第六天 关于毕设的一些调试感悟系列1.硬件平台的搭建用的完全是正点原子的硬件平台-阿波罗(STM32H743.... 发表于 12-27 19:17 •
录音机调试第五天 关于毕设的一些调试感悟系列1.硬件平台的搭建用的是正点原子的硬件平台-阿波罗(STM32H743),.... 发表于 12-27 19:16 •
定点数和浮点数在STM32单片机中使用傅里叶(FFT)变换的理解 定点数和浮点数的区别目的:理解定点数和浮点数在傅里叶变换(FFT)的实际应用中的选择单片机中如果需要.... 发表于 12-24 19:22 • 426次
录音机调试第七天 关于毕设的一些调试感悟系列这是此系列的最后一篇博客了,目前我已经完成了全部的调试工作,是时候欢迎我的.... 发表于 12-17 18:17 •
如何利用STM32F4去实现电流检测呢 如何利用STM32F4去实现电流检测呢?其实现代码是怎样的? 发表于 12-15 08:01 • 618次
在STM32中如何利用dsp库进行快速傅里叶计算 电力系统中往往掺杂谐波,而FFT可以将谐波检测出来,具有较大的实用价值。今天主要讲一下在STM32中如何利用dsp库进行快速傅... 发表于 12-15 07:49 • 700次
STM32F103+FFT+OLED25664的音乐频谱制作分享(继续干货) STM32F103+FFT+OLED25664的音乐频谱制作分享(继续干货) 发表于 12-05 18:06 • 515次
STM32F1 DSP官方库的安装 STM32F1 DSP官方库的安装1.完毕后进行安装,这里我甩出一个链接。2.接收协议。3.安装路径,我这里喜欢选择D盘。... 发表于 11-30 07:57 • 1028次
FFT—快速傅里叶变换算法——STM32F1+自定义C语言库(3) C语言版FFT简单测试本次我们来自己封装一个FFT函数,进行简单的测试。fft.c#include .... 发表于 11-26 13:36 • 123次
不久之前,我们发布了全新的 TI Design 参考设计,展示了一种用于无线监控电机状态以确定是否需.... 电子设计 发表于 11-23 14:57 • 591次
FFT—快速傅里叶变换算法——STM32F1+DSP库实现(2) STM32F1 DSP官方库的安装1.完毕后进行安装,这里我甩出一个链接。2.接收协议。3..... 发表于 11-21 19:36 • 254次
FFT变换之后的结果是什么意思呢 FFT是什么,可以用来做什么,怎么去做?FFT之后的结果是什么意思呢?如何决定要使用多少点来做FFT呢? 发表于 11-19 07:36 • 1149次
FFT算法在STM32测试程序设计中有何作用 为什么需要FFT?FFT算法在STM32测试程序设计中有何作用? 发表于 11-19 07:13 • 939次
怎样去使用Matlab读取TXT数据文件并做FFT分析呢 怎样去使用Matlab读取TXT数据文件并做FFT分析呢?其运行结果是怎样的呢?... 发表于 11-19 06:36 • 946次
振动分析在工程领域很常见,汽车中的 NVH,风机的模态分析,塔架、叶片等机械件的振动频率分析,发电机.... 西门子EDA 发表于 08-09 09:53 • 1437次
给予米勒循环和阿特金森循环的发动机配气机构公差如何调节   进气歧管压力测量可用于检测特定发动机的实际气门正时,从而可在线调节气门关闭状态,并与参考发动机进.... RichtekTechnology 发表于 08-09 09:28 • 2159次
采用IEEE745格式的浮点+ROM RAM的方式成功实现FFT的设计 采用IEEE745格式的浮点+ROM RAM的方式成功实现FFT的设计(嵌入式开发要学什么知乎)-采.... 发表于 07-30 16:21 • 252次
基于新型FPGA的FFT设计与实现 基于新型FPGA的FFT设计与实现设计方法。 发表于 06-17 17:07 • 346次
实时频谱分析仪中如何选择合适的FFT窗函数 摘要 本文主要介绍了常见的窗函数以及窗函数有什么用,以及在实时频谱分析中,该如何选择合适的加窗方式。.... city_prolove 发表于 05-24 09:11 • 2442次
基于申威处理器的大规模量子傅里叶变换 量子计算由于其纠缠性和叠加性具有天然的并行优势,然而目前的量子计算设备受限于物理实现的工艺水平,距离.... 发表于 05-13 11:17 • 256次
在雷达信号处理中,为了对低速运动杂波进行有效的抑制,研究了一种杂波速度谱图的建立方法。此杂波速度谱图.... city_prolove 发表于 05-05 14:23 • 1102次
一种基于Apache Storm的增量式FFT方法 针对传统单机版批处理式的快速傅里叶变换( Fast fourier transfor,FFT)难以满.... 发表于 04-28 14:44 • 243次
基于ADC量化对于中性氢观测影响的研究分析 随着数字技术的日益发展,应用在天文观测领域的数字信号处理技术也越来越成熟。本文针对ADC量化对于中性.... city_prolove 发表于 04-15 13:49 • 1105次
项目需求 完成对板上音频信号的采集和波形显示,可以通过手机播放音乐或App产生音频信号的方式提供声音.... 电子森林 发表于 04-01 10:20 • 1320次
如何使用FPGA实现全并行结构FFT 提出了一种基于FPGA实现的全并行结构FFT设计方法,采用XILINX公司最新器件VirtexII .... 发表于 03-31 15:22 • 411次
如何使用现场可编程门阵列实现图像调焦系统 数字图像自动调焦技术,不仅能提高调焦精度,而且能降低对成像系统加工和装配精度的要求。采用基于功率谱的.... 发表于 03-30 11:28 • 233次
如何使用FPGA实现时频二维搜索捕获算法 为提高捕获速度且减小资源消耗,以“多段匹配滤波器+快速傅里叶变换(EFT)”架构为基础。提出并实现了.... 发表于 03-22 16:06 • 321次
采用单一切面的循环平稳检测法 在非授权频段的频谱感知方法中,循环平稳检测法具有鲁棒性好与信号类型识别性强的特点,但其计算复杂度很高.... 发表于 03-11 17:06 • 253次
如何使用FPGA实现空间太阳望远镜图像相关算法 两维图像相关跟踪是空间太阳望远镜1m光学系统达到0.1“分辨率关键之一。介绍了基于FPGA实现SST.... 发表于 03-11 16:07 • 214次
如何使用FPGA实现空间太阳望远镜图像相关算法 两维图像相关跟踪是空间太阳望远镜1m光学系统达到0.1“分辨率关键之一。介绍了基于FPGA实现SST.... 发表于 03-11 16:07 • 211次
如何使用DSP实现方波信号的谐波分析 一切周期非正弦信号都是由某一频率的正弦波(基波)和若干数倍于此频率的正弦波(高次谐波)叠加而成。谐波.... 发表于 03-02 17:11 • 918次
典型电路中的滤波电路详细介绍 在音频发烧友群体中,在火腿群体中,在所有电子爱好者群体中,滤波电路可以说是老生常谈的话题了。有些人只.... 发表于 03-01 14:37 • 572次
如何使用FPGA实现高效的宽带数字接收机 针对电子战中的宽带侦察数字信道化接收机,提出了基于短时傅里叶变换的宽带数字信道化接收机的改进方法,给.... 发表于 02-05 17:35 • 451次
如何使用FPGA实现FFT的研究 目的针对高速数字信号处理的要求,给出了用现场可编程门阵列(FPGA)实现的快速傅里叶变换(FFT)方.... 发表于 02-02 17:13 • 355次
如何使用FPGA和CPLD实现FFT算法与仿真分析 可编程逻辑器件rPGA(现场可编程门阵列)和CPLD(复杂可编程逻辑器件)越来越多的应用于数字信号处.... 发表于 02-01 10:33 • 362次
示波器FFT进行频谱分析不靠谱吗 怎样才能解决呢     示波器被评为最常用的电子调试工具,因其强大的功能和通用性被广泛的应用。但随着电子技术的发展工.... 飞外网 发表于 01-27 09:56 • 1824次
使用FPGA实现流水线结构的FFT处理器论文讲解 针对高速实时信号处理的要求,介绍了用现场可编程逻辑阵列(FPGA)实现的一种流水线结构的FFT处理器.... 发表于 01-25 14:51 • 382次