MATLAB如何实现傅里叶变换FFT?有何物理意义?

MATLAB如何实现傅里叶变换FFT?有何物理意义?

为什么要进行傅立叶变换,究竟有何意义?如何用MATLAB实现快速傅立叶变换?本文从 FFT 的由来开始讲起,然后在 MATLAB 中实现了 FFT 的计算,并给大家详细地解读了 FFT 的变换结果,最后还介绍了 FFT 的一个应用实例。

工具/原料

 
  • MATLAB

准备傅里叶变换的基础知识

 
  1. 1

    为什么要进行傅里叶变换?

    将时域的信号,变换到频域的正弦信号

    正弦比原信号更简单,且正弦函数很早就被充分地研究,处理正弦信号,比处理原信号更简单

    正弦信号的频率保持性:输入为正弦信号,输出仍是正弦信号,幅度和相位可能发生变化,但频率与原信号保持一致;只有正弦信号才拥有这样的性质

     
  2. 2

    傅里叶变换的类型

    非周期连续信号:傅里叶变换

    周期连续信号:傅里叶级数

    非周期离散信号:离散时间傅里叶变换

    周期离散信号:离散傅里叶级数

     
     
  3. 3

    从离散傅里叶级数(DFS) 到离散傅里叶变换(DFT)

    从离散傅里叶变换(DFT) 到快速傅里叶变换(FFT)

    MATLAB如何实现傅里叶变换FFT?有何物理意义?
    MATLAB如何实现傅里叶变换FFT?有何物理意义?
    END

MATLAB中实现FFT的计算

 
  1.  

    Y = fft(x) % x 为一个序列(向量),存放采集信号的数据

    Y = fft(x,n) % x 的定义同上,n 定义计算数据的个数

    如果n 大于x 的长度,在x 的末尾添加0,使得x 的长度等于n

    如果n 小于x 的长度,截取x 中的前n 个数来进行计算

    Y 返回fft 的结果,为一个复数序列(向量)

    建议:采用第一种格式的用法,并且保证x 的个数为偶数

    MATLAB如何实现傅里叶变换FFT?有何物理意义?
    MATLAB如何实现傅里叶变换FFT?有何物理意义?
  2.  

    频谱关于中间位置对称(序号位置0 和N/2 除外),MATLAB 的FFT 为对称谱

    看MATLAB 中FFT 的频谱,只需要看一半

    幅值不受影响,但是实部或虚部的值,会出现0 的情况

    看MATLAB 中FFT 的频谱,应该看幅值

    MATLAB如何实现傅里叶变换FFT?有何物理意义?
    MATLAB如何实现傅里叶变换FFT?有何物理意义?
  3.  

    FFT结果的数据长度:时域N个点-->频域为N/2+1个点

    x轴频率点的设置:采样频率为Fs时,频谱图的最高频率为Fs/2(具体请参照采样定理)

    综合上述两点:x轴的频率点为:(0:1:N/2)*Fs/N

    复数的幅值修正:复数序列Y的幅值,需要进行转换,才能得到与时域中对应信号的幅值。

    复数的相位:计算Y的相位,得到与时域中对应信号的相位值

    MATLAB如何实现傅里叶变换FFT?有何物理意义?
    MATLAB如何实现傅里叶变换FFT?有何物理意义?
  4.  

    进行傅里叶变换FFT的两个基本问题

    采样频率为多少合适?

    -根据采样定理:Fs≥2Fc,实际应用中需要更大的Fs

    需要采集多少个点?

    -频谱图中,频率的坐标间隔(频率分辨率):Fs/N(Page13)

    -Fs=2000Hz,N=100,Fs/N=20

    -原信号含有60Hz,72Hz频率成分,(72–60)<20x

    -N增大至1000,Fs/N=2,(72–60)>2√

    MATLAB如何实现傅里叶变换FFT?有何物理意义?
    END

注意事项

 
  • 傅里叶变换是信号处理的基础内容
  • 推荐阅读郑君里老先生的《信号与系统》
原文地址:https://www.cnblogs.com/HuangNanShan/p/8405518.html