使用 FFT 进行频谱分析
1. 快速傅里叶变换(FFT )
按照被变换的输入信号类型不同,傅立叶变换可以分为 4种类型: 1)非周期性连续信号傅立叶变换(Fourier Transform ) 2)周期性连续信号傅立叶级数(Fourier Series )
3)非周期性离散信号离散时域傅立叶变换(Discrete Time Fourier Transform ) 4)周期性离散信号离散傅立叶变换(Discrete Fourier Transform )
因为计算机只能处理离散的数值信号,对于连续信号要先离散化,我们的最终目的是运用计算机来处理信号的。
对于离散信号的变换只有离散傅立叶变换(DFT )才能被适用,对于计算机来说只有离散的和有限长度的数据才能被处理,对于其它的变换类型只有在数学演算中才能用到。
快速傅里叶变换(Fast Fourier Transform ,FFT )是DFT 的一种快速算法。 DFT 的运算过程是这样的:
1
j /0
1
()()e
N nt N
n X k x n N
短时傅里叶变换matlab程序π−−==
∑
可见,在计算机上进行的DFT ,使用的输入值是经过ADC (Analog-to-Digital Conversion )后采集到的采样值,也就是时域的信号值,输入采样点的数量决定了转换的计算规模。变换后的频谱输出包含同样数量的采样点,但是其中有一半的值是冗余的,通常不会显示在频谱中,所以真正有用的信息是N /2+1个点。
FFT 是1965年由T. W. Coody 和J. W. Tukey 提出的,采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N 越多,FFT 算法计算量的节省就越显著。
2. MATLAB 中FFT 的使用方法
1)语法说明 Y = fft(X)
说明:用快速傅里叶变换 (FFT) 算法计算 X 的离散傅里叶变换 (DFT)。 • 如果 X 是向量,则 fft(X) 返回该向量的傅里叶变换。
•
如果 X 是矩阵,则 fft(X) 将 X 的各列视为向量,并返回每列的傅里叶变换。
•如果 X 是一个多维数组,则 fft(X) 将沿大小不等于 1 的第一个数组维度的值视为向量,并返回每个向量的傅里叶变换。
Y = fft(X,n)
说明:返回 n 点 DFT。如果未指定任何值,则 Y 的大小与 X 相同。
•如果 X 是向量且 X 的长度小于 n,则为 X 补上尾零以达到长度 n。
•如果 X 是向量且 X 的长度大于 n,则对 X 进行截断以达到长度 n。
•如果 X 是矩阵,则每列的处理与在向量情况下相同。
•如果 X 为多维数组,则大小不等于 1 的第一个数组维度的处理与在向量情况下相同。
2)示例
下面的示例说明如何使用FFT 函数进行频谱分析。FFT 的一个常用场景是确定一个时域含噪信号的频率分量。
指定信号的参数,采样频率为 1 kHz,信号持续时间为1.5 秒。
构造一个信号,其中包含幅值为0.7 的50 Hz 正弦量和幅值为1 的120 Hz 正弦量。
所示。
在时域中绘制这个信号,如图1
图1 50Hz和120Hz两个频率正弦波叠加的信号
用均值为零、方差为4 的白噪声扰乱该信号。
在时域中绘制含噪信号,如图2所示。通过查看信号X(t) 很难确定频率分量。
图2 含噪信号
要想得到含噪信号y 的离散傅里叶变换很容易,执行快速傅里叶变换(FFT) 即可实现。
计算双侧频谱P2。然后基于P2 和偶数信号长度N计算单侧频谱P1。这是由于变换后的频谱输出有一半的值是冗余的,真正有用的信息是N/2+1个点。
定义频域f 并绘制单侧幅值频谱P1,如图3所示。与预期相符,由于增加了噪声,幅值并不精确等于0.7 和1。一般情况下,较长的信号会产生更好的频率近似值。
图3 含噪信号的频谱
采用原始的、未加干扰的信号S(t)进行傅里叶变换,可获得精确的幅值0.7 和1.0,如图4所示。
图4 无噪信号的频谱
3.快速傅里叶逆变换(iFFT)
1)语法说明
X = ifft(Y)
说明:使用快速傅里叶变换算法计算Y 的逆离散傅里叶变换。X 与Y 的大小相同。
•如果 Y 是向量,则 ifft(Y) 返回该向量的逆变换。
•如果 Y 是矩阵,则 ifft(Y) 返回该矩阵每一列的逆变换。
•如果 Y 是多维数组,则 ifft(Y) 将大小不等于 1 的第一个维度上的值视为向量,并返回每个向量的逆变换。
X = ifft(Y,n)
说明:通过用尾随零填充 Y 以达到长度 n ,返回 Y 的 n 点傅里叶逆变换。
2)示例
时空采样数据与频率采样数据间的傅里叶变换及其逆变换。创建一个向量并计算其傅里叶变换。
Y = 1×5 complex
15.0000+0.0000i -2.5000+3.4410i -2.5000+0.8123i -2.5000-0.8123i -2.5000-3.4410i
计算
Y 的逆变换,结果与原始向量 X 相同。
ans = 1×5
1 2 3 4 5
前面的例子中,无噪声信号S(t)(图1)的频谱如图4所示,有两个频率。现在我们对Y 进行傅里叶逆变
换,得到信号W(t),并绘出曲线,如图5所示。可见,图5和图1一致。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论