数字信号处理实验讲义(修订版) 下载本文

数字信号处理实验讲义

1L?1ILi(?)?|?xi(n)w(n)e?j?nT|2,i?1,2,...,K

LUn?0?其中U表示窗口序列的能量,它等于

1L?12U??w(n)

Ln?0在此情况下,功率谱估计量可表示为

1SNX(?)?K?MI?Lii?1K

三、实验内容及步骤

实验中用到的信号序列:

a)Gaussian序列

??exa(n)???0,else

(n?p)2?,0?n?15q

b)衰减正弦序列

?e?ansin2?fn,0?n?15xb(n)???0,else

c)三角波序列

?n?1,0?n?3?xc(n)??8?n,4?n?7

?0,else?d)反三角波序列

18

数字信号处理实验讲义

?4?n,0?n?3?xd(n)??n?3,4?n?7

?0,else? 上机实验内容:

1、观察高斯序列的时域和幅频特性,固定信号xa(n)中参数p=8,改变q的值,使q分别等于2,4,8,观察它们的时域和幅频特性,了解当q取不同值时,对信号序列的时域幅频特性的影响;固定q=8,改变p,使p分别等于8,13,14,观察参数p变化对信号序列的时域及幅频特性的影响,观察p等于多少时,会发生明显的泄漏现象,混叠是否也随之出现?记录实验中观察到的现象,绘出相应的时域序列和幅频特性曲线。

2、观察衰减正弦序列xb(n)的时域和幅频特性,a=0.1,f=0.0625,检查谱峰出现位置是否正确,注意频谱的形状,绘出幅频特性曲线,改变f,使f分别等于0.4375和0.5625,观察这两种情况下,频谱的形状和谱峰出现位置,有无混叠和泄漏现象?说明产生现象的原因。

3、观察三角波和反三角波序列的时域和幅频特性,用N=8点FFT分析信号序列xc(n)和xd(n)的幅频特性,观察两者的序列形状和频谱曲线有什么异同?绘出两序列及其幅频特性曲线。

在xc(n)和xd(n)末尾补零,用N=16点FFT分析这两个信号的幅频特性,观察幅频特性发生了什么变化?两情况的FFT频谱还有相同之处吗?这些变化说明了什么? 4、一个连续信号含两个频率分量,经采样得

x(n)=sin2π*0.125n+cos2π*(0.125+Δf)n n=0,1??,N-1

已知N=16,Δf分别为1/16和1/64,观察其频谱;当N=128时,Δf不变,其结果有何不同,为什么?

5、用FFT分别实现xa(n)(p=8,q=2)和 xb(n)(a=0.1,f=0.0625)的16点圆周卷积和线性卷积。

6、产生一512点的随机序列xe(n),并用xc(n)和xe(n)作线性卷积,观察卷积前后xe(n)频谱的变化。要求将xe(n)分成8段,分别采用重叠相加法和重叠保留法。

四、实验思考

1、实验中的信号序列xc(n)和xd(n),在单位圆上的Z变换频谱|Xc()|和|Xd()|会相同吗?如果不同,你能说出哪一个低频分量更多一些吗?为什么?

2、对一个有限长序列进行DFT等价于将该序列周期延拓后进行DFS展开,因为DFS也只是取其中一个周期来计算,所以FFT在一定条件下也可以用以分析周期信号序列。如果实正弦信号sin(2πfn),f=0.1用16点FFT来做DFS运算,得到的频谱时信号本身的真实谱吗?

五、参考程序

1、用FFT对连续信号做谱分析,已知x(t)=cos(200*pi*t)+sin(100*pi*t)+cos(50*pi*t). 程序如下:

19

数字信号处理实验讲义

clear;close all

fs=400; T=1/fs; %采样频率为400Hz Tp=0.04; N=Tp*fs; %采样点数N N1=[N, 4*N, 8*N]; % 设定三种截取长度供调用 st=['|X1(jf)|';'|X4(jf)|';'|X8(jf)|']; % 设定三种标注语句供调用 %矩形窗截断 for m=1:3

n=1:N1(m);

xn=cos(200*pi*n*T)+sin(100*pi*n*T)+cos(50*pi*n*T);%产生采样序列x(n) Xk=fft(xn,4096); @96点DFT,用FFT实现 fk=[0:4095]/4096/T; subplot(3,2,2*m-1)

plot(fk,abs(Xk)/max(abs(Xk)));ylabel(st(m,:)) if m==1 title('矩形窗截取');end end

%加hamming窗改善谱间干扰 for m=1:3

n=1:N1(m);

wn=hamming(N1(m)); %调用工具箱函数hamming产生N长hamming窗序列wn xn=(cos(200*pi*n*T)+sin(100*pi*n*T)+cos(50*pi*n*T)).*wn'; Xk=fft(xn,4096); @96点DFT,用FFT实现 fk=[0:4095]/4096/T; subplot(3,2,2*m)

plot(fk,abs(Xk)/max(abs(Xk)));ylabel(st(m,:)) if m==1 title('Hamming窗截取');end end

2、用FFT做快速卷积,并测试直接卷积和快速卷积的时间。程序如下: clear;close all

xn=input('请输入x(n)序列:xn= 如 sin(0.4*[1:15])');

20

数字信号处理实验讲义

hn=input('请输入h(n)序列:hn= 如 0.9.^(1:20)'); M=length(xn); N=length(hn); nx=1:M; nh=1:N;

%循环卷积等于线性卷积的条件:循环卷积区间长度L>=M+N-1

L=pow2(nextpow2(M+N-1));%取L为大于等于且最接近(N+M-1)的2的正次幂 tic, %快速卷积计时开始 Xk=fft(xn,L); %L点FFT[x(n)] Hk=fft(hn,L); %L点FFT[h(n)] Yk=Xk.*Hk; %频域相乘得Y(k)

yn=ifft(Yk,L);%L点IFFT得到卷积结果y(n) toc %快速卷积计时结束 subplot(2,2,1),stem(nx,xn,'.'); ylabel('x(n)')

subplot(2,2,2),stem(nh,hn,'.'); ylabel('h(n)')

subplot(2,1,2);ny=1:L;

stem(ny,real(yn),'.');ylabel('y(n)') tic,

yn=conv(xn,hn); %直接调用函数conv计算卷积与快速卷积比较 toc

3、高斯序列

21