MATLAB 快速傅里叶变换(fft)结果为什么是复数? |
您所在的位置:网站首页 › 什么是双边序列 › MATLAB 快速傅里叶变换(fft)结果为什么是复数? |
文章核心是两部分: (1)从直观和本质的角度,说明为什么快速傅里叶变换的结果是复数; (2)详细说明了MATLAB中fft函数的运用方法,并给出了fft幅度谱的求解代码。 但要真正了解快速傅里叶变换,核心是理解“FFT的计算原理”!!! 目录 一、直观解释 二、本质原因之FFT的计算原理 (关键) 三、MATLAB中fft函数说明 函数形式 参数说明 四、 FFT求频率-幅值谱的MATLAB 代码 五、扩展阅读 一、直观解释第一,从定义式上看,积分号里含有复数,积分结果是复数; 第二,从傅立叶变换的物理意义上看:傅里叶变换是将一个信号分解为多个信号之和的形式,并且是正弦或余弦信号叠加的形式。决定一个正弦波 PS 来源:百度知道,但有部分修改! 二、本质原因之FFT的计算原理 (关键)要从本质上解释为什么快速傅里叶变换的结果是复数,需要理解快速傅里叶变换的计算原理。可参考如下帖子,写的十分优秀且详细! 十分简明易懂的FFT(快速傅里叶变换) 快速傅里叶变换(FFT)详解 三、MATLAB中fft函数说明以下内容在MATLAB快速傅里叶变换(fft)函数详解的基础上修改! 函数形式(1) Y = fft(y); (2) Y = fft(y,N); 式中,y是序列,Y是序列的快速傅里叶变换。y可以是一向量或矩阵,若y为向量,则Y是y的FFT,并且与y具有相同的长度。若y为一矩阵,则Y是对矩阵的每一列向量进行FFT。 参数说明1. 函数fft返回值的数据结构具有对称性 根据采样定理,fft能分辨的最高频率为采样频率的一半(即Nyquist频率),函数fft返回值是以Nyqusit频率为轴对称的,Y的前一半与后一半是复数共轭关系(复数共轭是因为快速傅里叶变换计算中单位根之间的复数共轭关系)。 2. 幅值 作FFT分析时,幅值大小与输入点数有关,要得到真实的幅值大小,只要将变换后的结果乘以2除以N即可(此时得到的单边谱),但此时单边谱的“零频分量”的幅值为实际值的2倍。对此的解释是:Y除以N得到双边谱,再乘以2得到单边谱,但零频在双边谱中本没有被一分为二,而转化为单边谱过程中所有幅值均乘以2,所以零频被放大了。在求解过程中,可以通过 P1(2:end-1) = 2*P1(2:end-1) 有效去除零频放大的问题。 3. 基频 若分析数据时长为T,则分析结果的基频就是f0=1/T,分析结果的频率序列为[0:LF-1]*f0 4. 执行N点FFT 在调用格式2中,函数执行N点FFT。若y为向量且长度小于N,则函数将y补零至长度N,若向量y的长度大于N,则函数截断y使之长度为N。使用N点FFT时,若N大于向量y的长度,将给频谱分析结果带来变化,应该特别注意,具体影响见下图。 结果1:fft的直接计算结果,仅画出实部,忽略虚部。结合第三部分参数说明“1函数fft返回值的数据结构具有对称性”理解。至于为什么对称,需要了解fft的计算原理! 结果2:简单而言,fft单边谱是双边谱的两倍,但需注意“零频”的放大效应!结合第三部分参数说明“2. 幅值”理解。 (1)傅里叶变换概念及公式推导 (2)MATLAB中的快速傅里叶变换FFT与IFFT (3)关于FFT的相位谱 (4)How to interpret FFT results – obtaining magnitude and phase information |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |