电子信息工程系实验 告
课程名称: 数字信 处理
成 绩: 实验项目名称:实验4 用DFT(FFT)对连续信 进行频谱分析 时间:2012-5-5
指导教师(签名): 班级:电信092 姓名:XXX 学 :910706201
实 验 目 的:
1、掌握用DFT(FFT)对模拟信 进行谱分析的方法,理解可能出现的分析误差及其原因, 以便在实际中正
确应用FFT。
2、熟悉应用FFT实现两个序列的线性卷积的方法。
实 验 环 境:
计算机、MATLAB软件
实 验 原 理:
1.用DFT(FFT)对连续信 进行频谱分析
首先一般的模拟信 (周期信 除外)的频谱是连续谱,而用FFT做谱分析得到的是数字谱,因此应该取FFT的点数多一些,用它的包络作为模拟信 的近似谱。另外,如果模拟信 不是严格的带限信 ,会因为频谱混叠现象引起谱分析的误差,这种情况下可以预先将模拟信 进行预滤,或者尽量将采样频率取高一些。最后要注意一般的模拟信 是无限长的,分析时要截断,截断的长度与对模拟信 进行频谱分析的分辨率有关。如果要进行谱分析的模拟信 是周期信 ,最好选择观测时间是信 周期的整数倍,并要尽量选择观测时间长一些,以减少截断效应的影响。在运用DFT(FFT)对模拟信 进行谱分析的过程中主要可能产生以下三种误差:混叠现象、截断效应、栅栏效应。
2.用FFT计算线性卷积
用FFT可以实现两个序列的圆周卷积。在一定的条件下,可以使圆周卷积等于线性卷积。一般情况,设两个序列的长度分别为N1和N2,要使圆周卷积等于线性卷积的充要条件是FFT的长度N(N≥N1+N2 ) 对于长度不足N的两个序列,分别将他们补零延长到N。当两个序列中有一个序列比较长的时候,我们可以采用分段卷积的方法。有两种方法:重叠相加法、重叠保留法。
实 验 内 容 和 步 骤:
x1(t)(t) .5ms1、 用MATLAB编制程序产生以下实验信 : x2(t)n(28) 频率f自己选择
x3(t)s8cos16cos20/p>
fs=64000; tp1=1.5/1000; t10=0:1/fs:tp1;
x1=ones(1,length(t10)); t11=(tp1+1/fs):1/fs:2*tp1;
x2=zeros(1,length(t11)); t1=[t10,t11]; x1t=[x1,x2];
subplot(3,1,1);plot(t1,x1t);axis([0,3/1000,0,1.5]);
f=201; fs=64000; tp2=1/10; t2=0:1/fs:tp2;
x2t=sin(2*pi*f*t2+pi/8); subplot(3,1,2);plot(t2,x2t);
fs=64000; tp3=1;
t3=0:1/fs:tp3;
x3t=cos(8*pi*t3)+cos(16*pi*t3)+cos(20*pi*t3);
subplot(3,1,3);plot(t3,x3t);
图1 x1(t)、x2(t)和x3(T)的信 波形图 2、
fs=64000; tp1=3/1000; t1=0:1/fs:tp1; gao=1.5/1000;
qian=ones(1,gao*fs); hou=zeros(1,fs*(tp1-gao)); x1t0=[qian,hou]; fs1=4000;
x1t=x1t0(1:fs/fs1:tp1*fs);
subplot(3,1,1);stem(0:1/fs1:(tp1*fs1-1)
/fs1,x1t);
fs2=8000;
x1t=x1t0(1:fs/fs2:tp1*fs);
subplot(3,1,2);stem(0:1/fs2:(tp1*fs2-1)/fs2,x1t); fs3=16000;
x1t=x1t0(1:fs/fs3:tp1*fs);
subplot(3,1,3);stem(0:1/fs3:(tp1*fs3-1)/fs3,x1t);
图2 对x1(t)选择不同采样频率的波形图
fs=64000; f=201; T=1/f; fs2=4*f; tp2=0.5*T; t2=0:1/fs:tp2;
x2t0=sin(2*pi*f*t2+pi/8); x2t=x2t0(1:fs/fs2:tp2*fs); subplot(3,1,1);
stem(0:1/fs2:(tp2*fs2-1)/fs2,x2t); tp2=T;
t2=0:1/fs:tp2;
x2t0=sin(2*pi*f*t2+pi/8); x2t=x2t0(1:fs/fs2:tp2*fs); subplot(3,1,2);
stem(0:1/fs2:(tp2*fs2-1)/fs2,x2t); tp2=2*T;
t2=0:1/fs:tp2;
x2t0=sin(2*pi*f*t2+pi/8); x2t=x2t0(1:fs/fs2:tp2*fs); subplot(3,1,3);
stem(0:1/fs2:(tp2*fs2-1)/fs2,x2t);
图3 对x2(t)选择不同观测时间的波形图 Fs=64;T=1/Fs;N=16;n=0:N-1;
x6nT=cos(8*pi*n*T)+cos(16*pi*n*T)+cos(20*pi*n*T); X6k16=fft(x6nT);X6k16=fftshift(X6k16);
Tp=N*T;F=1/Tp; k=-N/2:N/2-1;fk=k*F;
subplot(3,1,1);stem(fk,abs(X6k16),’.’);box on
title(’16点|DFT[x_6(nT)]|’);xlabel(‘f(Hz)’);ylabel(‘幅度’); axis([-N*F/2-1,N*F/2-1,0,1.2*max(abs(X6k16))]) N=32;n=0:N-1;
x6nT=cos(8*pi*n*T)+cos(16*pi*n*T)+cos(20*pi*n*T); X6k32=fft(x6nT);X6k32=fftshift(X6k32); Tp=N*T;F=1/Tp;k=-N/2:N/2-1;fk=k*F;
subplot(3,1,2);stem(fk,abs(X6k32),’.’);box on
title(’32点|DFT[x_6(nT)]|’);xlabel(‘f(Hz)’);ylabel(‘幅度’); axis([-N*F/2-1,N*F/2-1,0,1.2*max(abs(X6k32))]) N=64;n=0:N-1;
x6nT=cos(8*pi*n*T)+cos(16*pi*n*T)+cos(20*pi*n*T);
X6k64=fft(x6nT);X6k64=fftshift(X6k64); Tp=N*T;F=1/Tp;k=-N/2:N/2-1;fk=k*F;
subplot(3,1,3);stem(fk,abs(X6k64),’.’); box on
title(’64点|DFT[x_6(nT)]|’);xlabel(‘f(Hz)’);ylabel(‘幅度’); axis([-N*F/2-1,N*F/2-1,0,1.2*max(abs(X6k64))])
图4 对x3(t)选择不同采样频率的幅频曲线图 3、利用DFT的方式计算下面两序列的线性卷积:
x(n),2,1,1,2,1,1,2xn=[1,2,1,1,2,1,1,2];hn=[0,1,3,2,0];
L=length(xn)+length(hn);
XN=fft(xn,L);HN=fft(hn,L);YN=XN.*HN;
,
h(n),1,3,2,0(nyn1=ifft(YN,L);
subplot(2,1,1);stem(0:L-1,yn1);axis([0,L+1,0,10]); yn2=conv(xn,hn);
subplot(2,1,2);stem(0:L-2,yn2);axis([0,L+1,0,10]);
图5 DFT变换波形图 图6 matlab函数验证
相关资源:Yalefree雅乐简谱打谱软件_打谱软件-WindowsServer工具类资源…
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!