一、[实验目的]
1
.在理论学习的基础上,通过本实验,加深
FFT
的理解,熟悉
FFT
子程序;
2
.熟练掌握
FFT
实现两个序列的线性卷积的方法;
3
.熟悉应用
FFT
进行信号频谱分析过程中可能出现的问题以便在实际中正
确应用
FFT
;
4.
学习用
FFT
对连续信号进行谱分析的方法和参数选择原则;
5.掌握用 FFT 对连续信号进行谱分析时,由模拟信号采样得到序列的中
k 值与模拟信号实际频率 f 或Ω的对应关系。
二、[实验原理]
FFT 并不是与 DFT 不同的另一种变换,而是为了减少 DFT 运算次数的一种
DFT 快速算法。常用的 FFT 是基 2 算法,其长度 N=2^M 。当要变换的序列长
度不等于 2 的整数次幂时,为了使用以 2 为基数的 FFT,可以用末位补零的方
法,使其长度延长至 2 的整数次幂。其应用一般都以卷积运算的具体计算为依据,
或者以 DFT 作为连续傅里叶变换的近似为基础。
1.用 FFT 计算线性卷积
用 FFT 可以实现两个序列的循环卷积,其原理框图如图 3-1。一般情况,设
两个序列的长度分别为 N1 和 N2,循环卷积等于线性卷积的充要条件是 FFT 的
长度 N 满足:N≥N1+N2,对于长度不足 N 的两个序列分别将他们补零延长到 N。
图 1.用 FFT 计算循环卷积的原理框图
2.用 FFT 对信号进行频谱分析
MATLAB 提供了快速傅里叶变换算法 FFT 计算 DFT 的函数 fft,其调用格
式如下:
Xk = fft(xn, N)
或
Xk = fft(xn)
参数 xn 为被变换的时域序列向量,N 是 DFT 变换区间长度,当 N 大于 xn 长
度时,fft 函数自动在 xn 后面补零。当 N 省略时,fft 函数按 xn 的实际长度计
算,此时,相当于 DFT 的计算。
在运用 DFT 进行频谱分析的过程中可能产生三种误差:混叠、泄漏、栅栏
效应,具体概念详见教材。其中需要注意的是减少栅栏效应(提高频谱密度)与
提高 DFT 频率分辨率是不同的两个概念,减小栅栏效应的一个有效方法就是借
助于在原序列的末端补零。补零只能减轻栅栏效应,不能提高 DFT 的频率分辨
率。
3.模拟信号的频谱分析
(1)模拟信号的采样及 DFT 谱分析的原对模拟周期信号进行谱分析时,首先要按照采样定理将其变成时域离散信号。用 DFT 分析模拟信号谱的原理如图 3-2 所示。
序列 x(n)的傅里叶变换和连续信号频谱的关系可以表示为:
上式说明:可以通过对连续信号采样并进行 DFT 再乘以 Ts,近似得到模拟信号 频谱的周期延拓函数在第一个周期[0,Fs]上的 N 点等间隔采样
图 2 用 DFT 分析模拟信号谱的原理示意图
(2) 模拟信号进行谱分析时的参数选择问题 对模拟信号进行谱分析时,有几个重要的参数要选择:采样频率 Fs、频率分 辨率 F、DFT 的长度 N、模拟信号的截取时长 Tp=N*Ts。 要提高谱分辨率,又保持谱分析的范围不变(Fs 采样频率不变),只能增长 纪录时间 Tp(截取长度),增加采样点数 N。
(3)周期信号谱分析时对截取长度 Tp 的要求
对模拟周期信号用 DFT(FFT)作谱分析,要求有两点:一是截取的长度 Tp 是周期的整数倍;二是采样频率满足采样定理,且满足每个周期中采样点数相等。 这样得到的离散谱才能代表离散信号的频谱。否则会有相当大的谱分析误差。如 果不知道信号周期,可以尽量选择信号的观察时间长一些。
三、实验内容
1.已知序列