声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2116|回复: 0

[FFT] 带你了解到底什么是FFT

[复制链接]
发表于 2021-4-28 13:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
时域信号分为周期/非周期,连续和离散,这样有四种样式的傅里叶变换。
1.png
如上可以看到,在一个域的离散信号,在另一个域将变成周期的。类似的,在一个域连续的信号,在另外一个域必然是非周期的。

1、DFT
分为实数和复数版本的DFT,实数版本输入是实数,得到的频域点将有两个集合,分别是cos 和sin 函数的系数。复数输入表示的是正负频率。
2.png

实 DFT:
对于输入是x(n) 的N 点DFT,将获得N/2+1的两组cos 和sin 系数。
3.png
根据系数获取原始输入时,需要对Xre[0] 和Xre[N/2]除以2。

复 DFT:
对于N 点复数DFT 变换后得到的是N 点X[k]。
4.png
变换后的X[0] 是直流分量,1~N/2是正频成分,X[N/2] 是奈奎斯特频率,接下来的N/2−1是负频分量。

从频谱获得原始输入信号的公式是:
5.png
当时域信号是实数时,计算复DFT 时将虚部填零,下图是matlab fft 函数计算的DFT 结果。
6.png

2、FFT
FFT 是DFT 计算的快速方法。
7.png
8.png

FFT结果举例:
假设x[n] 是频率fc=10Hz余弦信号,采样率是fs=32∗fc
9.png
10.png

做N=256点FFT:
11.png
matlab数组从1开始,输出1-N,频点间隔是Δf=fs/N,先输出直流分量,然后是正频分量,再然后是负频分量。在MATLAB 中使用fftshift 后,将频率按负频分量、直流以及正频分量排列。
12.png
实信号:
13.png
实数信号以fs 为采样率,那奎斯特采样定理表明混跌频率是fs /2,则实数信号的fft 结果中前半部分是[0,fs/2],后半部分是[fs/2,fs]。由于周期性,在频谱不混跌的情况下,后半部分等于[−fs/2,0],在上图中看到第一个数是36+0i,这就是直流分量。另外,还应该注意到第i 个数,实际上等于第N−i 个数的共轭。所以,实际上实数的快速傅里叶算法会利用这个性质减小运算量和存储空间,这是在代码级别的优化。在实际频率显示时,某些场合期望得到[−fs/2, fs/2]显示频谱,通常会使用matlab 的fftshift 来实现这个功能。

复信号:
对于复信号没有负频率,以fs 采样率的信号,fft 频谱的结果是从[0,fs]。在f>fs/2时,对复信号的fft 结果进行fftshift 会产生频谱混跌。

来源:CSDN shichaog的博客,原题:如何理解FFT。

回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-24 20:06 , Processed in 0.065490 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表