数字信号处理实验报告
- 格式:doc
- 大小:167.80 KB
- 文档页数:9
. . . .
. . .. 数字信号处理实验报告
实验一:混叠现象的时域与频域表现
实验原理:当采样频率Fs不满足采样定理,会在0.5Fs附近引起频谱混叠,造成频谱分析误差。
实验过程:考虑频率分别为3Hz,7Hz,13Hz 的三个余弦信号,即:g1(t)=cos(6πt), g2(t)=cos(14πt),
g3(t)=cos(26πt),当采样频率为10Hz 时,即采样间隔为0.1秒,则产生的序列分别为:g1[n]=cos(0.6πn), g2[n]=cos(1.4πn), g3[n]=cos(2.6πn)
对g2[n],g3[n] 稍加变换可得:
g2[n]=cos(1.4πn)=cos((2π-0.6π)n)= cos(0.6πn)
g3[n]=cos(2.6πn)= cos((2π+0.6π)n)=cos(0.6πn)
利用Matlab进行编程:
n=1:300;
t=(n-1)*1/300;
g1=cos(6*pi*t);
g2=cos(14*pi*t);
g3=cos(26*pi*t);
plot(t,g1,t,g2,t,g3);
k=1:100;
s=k*0.1;
q1=cos(6*pi*s);
q2=cos(14*pi*s);
q3=cos(26*pi*s);
hold on; plot(s(1:10),q1(1:10),'bd');
figure
subplot(2,2,1);plot(k/10,abs(fft(q1)))
subplot(2,2,2);plot(k/10,abs(fft(q2)))
subplot(2,2,3);plot(k/10,abs(fft(q3)))
通过Matlab软件的图像如图所示:
.
. . .
. . ..
如果将采样频率改为30Hz,则三信号采样后不会发生频率混叠,可运行以下的程序,观察序列的频谱。
程序编程改动如下:
k=1:300;
q=cos(6*pi*k/30);
q1=cos(14*pi*k/30);
q2=cos(26*pi*k/30);
subplot(2,2,1);plot(k/10,abs(fft(q)))
subplot(2,2,2);plot(k/10,abs(fft(q1)))
subplot(2,2,3);plot(k/10,abs(fft(q2)))
得图像: .
. . .
. . ..
问题讨论:保证采样后的信号不发生混叠的条件是什么?若信号的最高频率为17Hz,采样频率为30Hz,问是否会发生频率混叠?混叠成频率为多少Hz的信号?编程验证你的想法。
解答:若采样频率大于等于2倍的最高频率,则不会发生频谱混叠。
编程如下:n=1:300;
t=(n-1)*1/300;
g1=cos(6*pi*t);
g2=cos(14*pi*t);
g3=cos(34*pi*t);
plot(t,g1,t,g2,t,g3);
k=1:300;
s=k/30;
q1=cos(6*pi*s);
q2=cos(14*pi*s);
q3=cos(34*pi*s);
hold on; plot(s(1:10),q1(1:10),'bd');
figure
subplot(2,2,1);plot(k/10,abs(fft(q1)))
subplot(2,2,2);plot(k/10,abs(fft(q2)))
subplot(2,2,3);plot(k/10,abs(fft(q3)))
.
. . .
. . ..
在频谱分析的图像上可以看出,发生了频率混叠,混叠后的频率分别是17Hz和13Hz。
实验二 泄漏效应
实验原理:由于模拟信号的傅里叶变换是在±∞区间上的一种积分运算,实际上观察到的模拟信号一般是有限长的,没有观察到的部分只能认为是零,这相当于将模拟信号截取一部分进行分析。使得原来的离散谱线向两边展宽,而展宽的宽度和矩形窗的长度有关,矩形窗的长度越长,展宽就越窄。这种将谱线展宽的现象称为频谱泄露。
实验过程:由于泄漏效应的复杂性,下面的实验演示单一频率正弦信号由于截断引起的泄漏。首先考察频率为10Hz的正弦信号,采样频率为64Hz,对32点的采样序列进行DFT(FFT),由于是整周期截取,所以不会产生泄漏,程序和运行结果如下(图9-34):
N=input('type in the length of dft=');%采样点数
t=input('type in the sampling period=');%采样时间间隔
freq=input('type in the sinusoid frequency =');%信号频率
k=0:N-1;
f=sin(2*pi*freq*k*(1/t));
F=fft(f);
stem(k,abs(F));grid;
xlabel('k');ylabel('|x(k)|');
如果采样频率仍为64Hz,采样点数仍为32点,将信号频率改为11Hz,由于非整周期截取,发生了明显的泄漏,如图所示: .
. . .
. . ..
问题讨论:如何选取采样点数、采样频率,才能保证频率为11Hz 的正弦信号不会发生泄漏现象?选取采样点数为30,采样频率为66Hz,运行程序看一看是否有泄漏发生。
解答:(1)、不会产生泄漏的条件是:对信号进行整周期截取。
根据条件知:N=(采样点数/采样频率)* 信号频率,
要使泄漏不发生,需使N为正整数,在这一条件下进行采样点数及采样频率。
(2)、将信号频率11Hz、采样点数30、采样频率66Hz代入公式:
N=(采样点数/采样频率)* 信号频率
中,得 N=5, 整周期截取,故不发生泄漏。
图像如下:
实验三 FFT(DFT)参数的选取
实验原理:本实验考察有不同频率的两个正弦信号加上随机信号组成的信号的傅立叶变换,通过改变序列的采样点数、DFT长度以及信号的频率,观察谱分辨率以及泄漏对谱估计的影响。
实验过程:编程如下:
N=input('signal length=');%采样点数
R=input('DFT length=');%DFT的变换长度
fr=input('type in the sinusoid frequences=');%输入正弦信号的频率
y=hamming(N);%可采用其他的窗函数,进行比较
n=0:N-1;
x=cos(2*pi*n*fr(1))+cos(2*pi*n*fr(2))+randn(1,N)/5;
x1=x.*y'; . . . .
. . .. Fx=fft(x1,R);
k=0:R-1;
subplot(2,1,1)
stem(k/R,abs(Fx));grid
当fr=[0.22 0.34],N=16时,分别取R=16,32,64,128,256,可以看出随R的增大,明显地可看出两个峰值,但还有其他的一些峰值,无法确定是否还有其他的正弦信号。
当N=16, R=128, fr(2)=0.34, fr(1)分别取0.28 ,0.29, 0.30,0.31时,可以看出当 fr(1)=0.28,0.29时,两谱峰是可分辨的,但fr(1)=0.30,0.31时,两谱峰不可分辨,此时取N=32,64时,两谱峰又可分辨。
如图是fr=[0.22 0.34],N=16,R分别等于16,64时的程序运行结果。
(R=16)
(R=64)
图是fr=[0.22 0.34],N=32,R=64时的程序运行结果:
(N=32)
实验四 量化效应
实验原理:本实验对信号x(t)=sin(2πt)进行采样,得到从t=0开始的1000采样值,采样周期为0.001s,采样取得的信号是舍入的,用四位量化器得到量化后的信号,最后画出原始波形和量化后的波形,并画出量化误差的直方图,且输出信噪比。可以看出,量化误差具有均匀分布的特性。
实验过程:编程如下: N=1000;t=(0:N-1)*0.001;x=sin(2*pi*t); . . . .
. . .. d=max(x)-min(x);
b=4;L=2^b;
s=d/L;
y=s*round(x/s);
subplot(2,1,1);plot(t,x);hold on
plot(t,y);hold off
subplot(2,1,2);e=x-y,hist(e);
snra=10*log10(sum(x.*x))/sum(e.*e)
问题讨论: 改变量化器的位数和信号的动态围等参数,重新运行上面的程序,总结信号的动态围和量化阶数对信噪比的影响。
解答:A=0.25时: N=1000;t=(0:N-1)*0.001;x=0.25*sin(2*pi*t);