
一、实验目的
(1)通过实验巩固离散福利叶变换DFT的认识和理解。
(2)熟练掌握应用DFT进行频谱分析的方法。
(3)了解DFT离散频谱分析的应用价值。
二、实验内容
在语音识别、雷达信号处理、生物医学信号检测与识别等领域广泛使用基于离散傅里叶变换的谱分析技术。一个典型的信号识别系统如图所示:
设系统的输入信号x(n)是具有单一频谱峰值的正弦信号,短时矩形窗将信号截短尾有限长,经过DFT变换得到频谱,频率检测器检测频谱最大峰值的位置,即对应的频率,然后由分类器识别信号的类别。分类器的分类判决规则为:
第一类:最大峰值频率分布范围(Hz)为0≤f≤200。
第二类:最大峰值频率分布范围(Hz)为200≤f≤500。
第三类:最大峰值频率分布范围(Hz)为500≤f≤1000。
第四类:最大峰值频率分布范围(Hz)为f≥1000。
设采样频率fs=10000Hz,短时矩形窗宽度为N=1000,短时加窗信号经过DFT可以得到连续频谱在0<ω<2π范围内的1000个取样点。
(1)编程实现该系统
(2)输入信号1.2sin(0.08πn),理论计算并画出0≤f≤fs范围的幅度谱,标出峰值频率,观察实际识别结果,分析其正确性。
(3)输入信号1.5+3cos(0.5πn),理论计算并画出0≤f≤fs范围的幅度谱,标出峰值频率,观察实际识别结果,分析其正确性。
(4)输入信号0.7sin(0.14πn),理论计算并画出0≤f≤fs范围的幅度谱,标出峰值频率,观察实际识别结果,分析其正确性。
(5)输入信号1.2cos(0.5πn)+ 9.5sin(0.02πn),理论计算并画出0≤f≤fs范围的幅度谱,标出峰值频率,观察实际识别结果,分析其正确性。
(6)输入信号cos(0.102πn),理论计算并画出0≤f≤fs范围的幅度谱,标出峰值频率,观察实际识别结果,分析其正确性。
三、实验原理
设x(n)是长度为N的有限长信号(注意这个前提),即信号仅仅分布在[0,N-1]区间,其余时间均为0,那么该信号的离散傅立叶变换定义为:
其中,k=0~N-1的整数。
f与k的关系为:
一般情况下,频域的采样点数必须与时域信号的长度一致。
四、实验结果
(1) MATLAB程序如下:
function FS=dft1(A,a,B,b,C)
fs=10000; %采样点频率
N=1000; %采样点个数
n=0:(N-1);
x=A*cos(a*pi*n)+B*sin(b*pi*n)+C; %定义一般性的输入信号形式
y=x; %定义一个数组
s=0; %记录最大峰值
FS=[0,0,0]; %将返回值定义为数组用于返回多个数
for k=1:N %实现离散傅里叶变换
y(k)=0;
n=1;
while(n n=n+1; end if s<=abs(y(k)) %最大峰值 s=abs(y(k)); m=k-1; %最大峰值处的k end end f=fs*m/N; %最大峰值处的频率 FS=[m,f,s]; %返回最大峰值处的k,最大峰值处的频率,最大峰值 k=0:N-1; plot(k,abs(y)); %画出频谱图 end (2) X(n)=1.2sin(0.08πn) 返回值40.0000 400.0000 600.0000 第2类 (3)X(n)= 1.5+3cos(0.5πn) 返回值 0 0 1500.0 第1类 (4) x(n)=0.7sin(0.14πn) 返回值 70.0 700.0 350.0 第3类 (5) x(n)=1.2cos(0.5πn)+9.5sin(0.02πn) 返回值990.0 9900.0 4750.0 第4类 (6) x(n)=cos(0.102πn) 返回值 51.0000 510.0000 500.0000 第3类 五、思考题 1.当矩形窗长度比1000小,例如32,以上实验内容(6)可能出现什么情况? 答:频率分辨率降低,出现失真现象。如图: 2. 当输入信号x(n)=cos(0.19πn)时,系统能够得到正确的识别结果吗?为什么? 答:能,因为频域的采样点数与时域信号长度一致,所以系统能够得到正确的识别结果,返回值 95.0000 950.0000 500.0000如图: 3.如果输入信号x(n)含有叠加性宽带噪声e(n)会影响识别结果吗?为什么? 答:不会,因为信号是同相叠加,噪声是非同相叠加,二者在频谱上可以明显区分出来。 4.如果系统中的DFT要更新为FFT,且短时窗不变,则FFT计算应做哪些考虑,对识别结果有什么影响? 答:FFT中要求信号长度是2的整数幂,现在N=1000点,则须将其改为2的整数幂,如1024,则需要进行(1024/2)log21024=5120次复数乘法运算。对识别结果的频谱分析和时间分辨率不会造成影响,可以提高频率分辨率。 六、总结 通过本次实验,我学到了很多知识,巩固了对离散福利叶变换的认识和理解,熟练掌握应用DFT进行频谱分析,了解DFT离散频谱分析的应用价值,更加熟悉MATLAB这一款用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言,掌握了更多灵活多变的函数调用方法。
