基础实验 快速傅里叶变换及信号的频域分析
快速傅里叶变换(Fast FourierTransform, FFT)是离散傅里叶变换(DiscreteFourier Transform, DFT)的快速计算方法。其利用复因子
的周期性和对称性降低DFT的计算量,提高DFT的实用性。借助蝶形运算,通过按时间抽取或按频率抽取方式,FFT能够将原信号序列的DFT逐次分解为较短的DFT来计算,以提高计算效率。
FFT的主要应用领域之一是连续时间信号
的离散时间傅里叶分析,即频域分析。由于DFT要求采样信号
为有限长序列,因此需要做加窗处理,即
。由此可见,窗函数
将会对信号的DFT分析产生影响。
本实验将通过理论计算、MATLAB仿真分析,加深理解FFT在卷积运算中的高效性,观察加窗对信号DFT分析的影响,掌握MATLAB中关于FFT的函数及其使用方法。
相关Matlab函数说明
1、快速傅里叶变换函数fft(x, N)
调用方法:y= fft(x, N);
该函数用于实现离散信号序列x的N点DFT计算。
输入参数:x ---有限长离散信号序列。
N --- DFT点数。
输出参数:y ---x的N点DFT结果。
2、频谱居中搬移函数fftshift(x)
调用方法:y= fftshift(x)
该函数用于将fft函数结果的零频率点移至频谱中心。
输入参数:x ---fft函数计算结果。
输出参数:y ---频谱居中后的DFT结果。
3、常用窗函数
3.1 汉明窗:w= hamming(L);
输入参数:L ---窗函数点数。
输出参数:w --- 窗函数序列(列向量)。
3.2 汉宁窗:w= hann(L);
输入参数:L ---窗函数点数。
输出参数:w --- 窗函数序列(列向量)。
3.3 布莱克曼窗:w= blackman(L);
输入参数:L ---窗函数点数。
输出参数:w --- 窗函数序列(列向量)。
3.4 凯泽窗:w= kaiser(L,beta);
输入参数:L ---窗函数点数。
beta --- 旁瓣衰减参数,默认值为0.5;beta越大,主瓣越宽,但旁瓣幅度越低。
4、离散序列数据图形化显示函数stem(x, y)
调用方法:stem(x,y);
该函数用于图形化显示离散序列y沿着自变量x的分布。
输入参数:x ---自变量。
y --- 离散序列数据。
输出参数:一般使用时,可以不设置输出参数。
5、绝对值或复数幅度函数abs(x)
调用方法:y= abs(x);
该函数用于获取数值(或序列)的绝对值或复数幅度。
输入参数:x ---输入数值或序列,可以为实数或复数。
输出参数:y ---x的绝对值或复数幅度;当x为序列时,y也是相同长度的序列。
实验内容及步骤
1、线性卷积时域与频域实现方法的计算量分析与比较
设两个实数序列长度分别为
和
,且满足
。根据线性卷积定义和FFT蝶形运算原理,理论分析计算时域卷积和频域相乘两种方式实现二者线性卷积所需的实数乘法和实数加法次数,给出详细的计算过程,并利用MATLAB分别给出两种实现方法实数乘法和实数加法关于自变量
的图形化显示结果。
实验具体步骤为:
(1)对两个长度分别为
和
的序列(
),进行线性卷积,计算卷积过程中所需实数乘法运算次数和实数加法运算次数。
(2)将两个原始序列分别补0成长度为
的序列,并分别做
点FFT,将得到的频域数据相乘后得到的序列做
点IFFT,变换后的序列即为两个原始序列时域卷积的结果。计算该方法所需实数乘法运算的次数和实数加法运算的次数。
对于长度为
的序列,做FFT所需的运算次数为:
复数乘法 |
复数加法 |
实数乘法 |
实数加法 |
或
 |
或
 |
或
 |
或
 |
(3)取
,用MATLAB中的stem函数分别画出以
为横坐标、时域卷积和频域相乘方法下所需的乘法运算次数以及两种方法下的加法运算次数。
stem函数用法示例如下:
n =1:10;
xn= (n-5).^2;
stem(n,xn,'k');
title('stem示例');
xlabel('n');
ylabel('xn');
legend('二次函数');
(4) 保存图形化显示结果,完成相应的实验报告。
2、窗函数长度对信号DFT分析的影响
针对正弦混合信号序列
,使用汉明窗
对
进行时域加窗处理,当
,
和
时,利用MATLAB画出加窗序列的
点DFT幅度谱
,并分析
的增加对信号频谱的影响。
实验具体步骤为:
(1) 调用hamming函数,分别产生指定长度为
的汉明窗序列
,利用stem函数给出其时域的图形化显示结果;
(2) 根据输入信号
解析式和汉明窗序列
,生成时域加窗后的离散信号序列
;
(3) 调用fft函数和abs函数,生成
点DFT的幅度谱
,其中
。利用stem函数给出不同
条件下
的图形化显示结果;
(4) 通过
结果,观察输入信号中两个正弦分量的可分辨程度,分析
的增加对信号频谱的影响;
(5) 保存图形化显示结果,完成相应的实验报告。
3、频域采样对信号DFT分析的影响
针对正弦混合信号序列
,使用32点的汉明窗
对
进行时域加窗处理。利用MATLAB画出加窗序列的
点DFT幅度谱
,并分析在窗长不变条件下,
的增加对信号频谱的影响,其中
,
,
,
和
。
实验具体步骤为:
(1) 调用hamming函数,分别产生指定长度为
=32的汉明窗序列
,利用stem函数给出其时域的图形化显示结果;
(2) 根据输入信号
解析式和汉明窗序列
,生成时域加窗后的离散信号序列
;
(3) 调用fft函数和abs函数,生成
点DFT的幅度谱
,其中
分别取32、64、128、256和512。利用stem函数给出不同
条件下
的图形化显示结果;
(4) 通过
结果,观察输入信号频谱采样疏密程度和分辨力,分析在
一定的条件下,增加DFT点数对信号频谱的影响;
(5) 保存图形化显示结果,完成相应的实验报告。
实验报告要求
(1) 给出实验内容1的详细计算过程及结果;
(2) 列出完成上述实验所需的MATLAB程序;
(3) 给出实验要求的图形化结果;
(4) 分析比较实验结果,结合相关知识给出实验结论。