基于DFT的信号识别系统.docx
《基于DFT的信号识别系统.docx》由会员分享,可在线阅读,更多相关《基于DFT的信号识别系统.docx(13页珍藏版)》请在冰豆网上搜索。
基于DFT的信号识别系统
实验一:
基于DFT的信号识别系统
一、实验目的
(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)输入信号x(n)=1.2sin(0.08πn),理论计算并画出0≤f≤fs范围的幅度谱,标出峰值频率,观察系统的实际识别结果,分析其正确性。
(3)输入信号x(n)=1.5+3cos(0.5πn),理论计算并画出0≤f≤fs范围的幅度谱,标出峰值频率,观察系统的实际识别结果,分析其正确性。
(4)输入信号x(n)=0.7sin(0.14πn),理论计算并画出0≤f≤fs范围的幅度谱,标出峰值频率,观察系统的实际识别结果,分析其正确性。
(5)输入信号x(n)=1.2cos(0.5πn)+9.5sin(0.02πn),理论计算并画出0≤f≤fs范围的幅度谱,标出峰值频率,观察系统的实际识别结果,分析其正确性。
(6)输入信号x(n)=cos(0.102πn),理论计算并画出0≤f≤fs范围的幅度谱,标出峰值频率,观察系统的实际识别结果,分析其正确性。
三、实验分析
设x(n)是长度为N点的有限长信号(注意这个前提),即信号仅仅分布在[0,N-1]区间,其余时间均为0,那么,该信号的离散傅立叶变换定义如下:
,k=0~N-1
f与k的关系式为:
因为
,所以有
。
以此为依据对输入信号作如下理论分析:
(1) 输入信号为x(n)=1.2sin(0.08πn)时,峰值出现在
=400Hz。
(2) 输入信号为x(n)=1.5+3cos(0.5πn)时,峰值出现在
=0Hz 或f=2500Hz,而因为直流分量不仅使笫1条谱线(0频率)有很大的值,同时由于泄漏的存在,对低频部分造成影响,所以一般频谱分析要去掉0频率,所以最大峰值出现在f=2500Hz。
(3) 输入信号为x(n)=0.7sin(0.14πn)时,峰值出现在
=700Hz。
(4) 输入信号为x(n)=1.2cos(0.5πn)+9.5sin(0.02πn)时,峰值出现在
=2500Hz 或
=100Hz,因为幅值9.5>1.2,所以应该出现在ω=0.02π时即f=100Hz处。
(5) 输入信号为x(n)=cos(0.102πn)时,峰值出现在
=510Hz。
备注:
MATLAB程序见实验报告最后。
四、实验结果
(1)X(n)=1.2sin(0.08πn)
系统识别结果:
点:
K=40
频率:
f=400Hz
幅值:
600
最大峰值频率为400Hz,属于第2类
结论:
与理论值相同,系统识别结果正确。
(2)X(n)=1.5+3cos(0.5πn)
系统识别结果:
点1:
K=0点2:
K=250
频率:
f=0Hz频率:
f=2500Hz
幅值:
1500幅值:
1500
最大峰值频率为2500Hz,属于第4类
结论:
与理论值相同,系统识别结果正确。
(3)x(n)=0.7sin(0.14πn)
系统识别结果:
点:
K=70
频率:
f=700Hz
幅值:
350
最大峰值频率为700Hz,属于第3类
结论:
与理论值相同,系统识别结果正确。
(4)x(n)=1.2cos(0.5πn)+9.5sin(0.02πn)
系统识别结果:
点1:
k=10点2:
k=250
频率:
f=100Hz频率:
f=2500Hz
幅值:
4750幅值:
600
最大峰值频率为100Hz,属于第1类
结论:
与理论值相同,系统识别结果正确。
(5)x(n)=cos(0.102πn)
系统识别结果:
点:
K=51
频率:
f=510Hz
幅值:
500
最大峰值频率为510Hz,属于第3类
结论:
与理论值相同,系统识别结果正确。
五、思考题
1.当矩形窗长度比1000小,例如32,以上实验内容(6)可能出现什么情况?
答:
当N=32时,由于矩形窗太小,频率分辨率低,出现失真现象,即:
从图形中可以看出已经得不出原始信号的频谱,分辨不出最大峰值频率。
如图:
2.当输入信号x(n)=cos(0.199πn)+0.9sin(0.204πn)时,系统能够得到正确的识别结果吗?
为什么?
答:
能,因为输入信号的两个频率分量的差值为1020Hz-995Hz=25Hz,当采样频率为10000Hz,矩形窗的宽度为1000时,频率分辨率为10Hz,25>10,所以在两个频率之间还有采样点,所以能够得出正确的识别结果。
其识别如下:
系统识别结果:
点k=102
频率f=995Hz
幅值514.3
属于第三类
3、如果输入信号x(n)中含有叠加性宽带噪声e(n)会影响识别结果么?
为什么?
答:
(如果噪声信号的幅度很大),可能会影响识别结果。
设混叠后的信号为s(n),则s(n)=x(n)+e(n);所以S(K)=X(K)+E(K),因此S(K)^2=S(K)S(K)*=X(K)^2+E(K)^2。
两边求算术平方根得S(K)=
所以,如果输入信号中含有叠加性宽带噪声,且噪声较大,则有可能会影响识别结果。
4、如果系统中的DFT需要更新为FFT,并且短时窗不变,则FFT计算时应该做哪儿些考虑?
对识别结果会产生什么影响?
答:
当DFT更新为FFT时,要短时窗不变,在计算的时候应该考虑以下几个方面:
由于FFT要求信号的长度N是2的整数幂,可以采用补零法将N增加为2的整数幂,补零法保持时间分辨率不变,提高了频率分辨率。
①首先应该将信号序列分为偶序列X0(K)和奇序列X1(K)两个长度相等的序列;
②奇序列X1(K)和偶序列X0(K)的短时窗长度都将变为N/2=500点,而不再是N=1000;
③奇序列X1(K)和偶序列X0(K)的K值取值范围为K=0~N/2-1;,当N/2≤K<N时,应该利用X0(K)、X1(K)的周期性特征,即X0(K)=X0(K-N/2),X1(K)=X1(K-N/2)。
对识别结果不会产生什么影响。
六、实验总结
通过此次DFT信号识别系统的实验,我们小组得出如下实验总结:
(1)从频谱图中可以看出,在0(2)因为频率分辨率与采样频率和采样点有关,只要频率的分辨率足够,使在两个峰值对应的频率之间至少有一个采样谷点,就能够将两个频率分辨出,如思考题
(2);
(3)若采样频率不变,矩形窗的宽度变小,则频率分辨率降低,幅度谱可能会失真,如思考题
(1)
(4)离散傅里叶变换在语音的识别中具有重要的作用。
另外,通过本次实验,我们小组三人不仅仅对DFT的认识得到了近一步的加深,我们了解到应该怎样应用DFT进行频谱分析,同时对MATLAB这一软件的应用操作更加熟练,编写程序更加快捷。
七、附MATLAB程序:
functionFS=dft4(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;
s=0;
fork=0:
(N-1)
p(k+1)=0;
forn=0:
(N-1)
p(k+1)=x(n+1)*exp(-j*2*pi*k*n/N)+p(k+1);
end
ifk<=N/2
ifss=abs(p(k+1));
m=k;
end
end
end
fm=fs*m/N;
type='type';
if(fm>=0)&&(fm<200)type='type1';
elseif(fm>=200)&&(fm<500)type='type2';
elseif(fm>=500)&&(fm<1000)type='type3';
elseiffm>=1000type='type4';end
FS={m,fm,s,type};
subplot(2,1,1);
n=0:
(N-1);
plot(n*fs/N,x);
title('sourcesignal');
subplot(2,1,2);
plot(n*fs/N,abs(p),'r');
title('Magnitude');
xlabel('Frequency');
end