资源描述
实验五1实验五 信号的抽样与恢复
———————————————————————————————— 作者:
———————————————————————————————— 日期:
15
个人收集整理 勿做商业用途
实验五 信号的抽样与恢复
一、实验目的
(1) 验证抽样定理;
(2) 熟悉信号的抽样与恢复过程;
(3) 通过实验观察欠采样时信号频谱的混迭现象;
(4) 掌握采样前后信号频谱的变化,加深对采样定理的理解;
(5) 掌握采样频率的确定方法.
二、 实验内容和原理
信号的抽样与恢复示意图如图4.1所示。
图5-1 信号的抽样与恢复示意图
抽样定理指出:一个有限频宽的连续时间信号,其最高频率为,经过等间
隔抽样后,只要抽样频率不小于信号最高频率的二倍,即满足,就能从抽样信号中恢复原信号,得到。与相比没有失真,只有幅度和相位的差异。一般把最低的抽样频率称为奈奎斯特抽样频率.当时,的频谱将产生混迭现象,此时将无法恢复原信号。
的幅度频谱为
;开关信号为周期矩形脉冲,其脉宽相对于周期非常小,故将其视为冲激序列,所以的幅度频谱亦为冲激序列;抽样信号的幅度频谱为;的幅度频谱为.如图4。1所示。
观察抽样信号的频谱,可以发现利用低通滤波器(其截止频率满足)就能恢复原信号。
信号抽样与恢复的原理框图如图4。2所示。
图 5-2 信号抽样与恢复的原理框图
由原理框图不难看出,A/D转换环节实现抽样、量化、编码过程;数字信号处理环节对得到的数字信号进行必要的处理;D/A转换环节实现数/模转换,得到连续时间信号;低通滤波器的作用是滤除截止频率以外的信号,恢复出与原信号相比无失真的信号。
三、涉及的MATLAB函数
subplot(2,1,1)
xlabel(’时间, msec');ylabel(’幅值’);
title(’连续时间信号 x_{a}(t)’);
axis([0 1 -1。2 1。2])
stem(k,xs);grid;
linspace(—0.5,1。5,500)';
ones(size(n)
freqs(2,[1 2 1],wa);
plot(wa/(2*pi),abs(ha)
buttord(Wp, Ws, 0。5, 30,'s');
[Yz, w] = freqz(y, 1, 512);
M= input('欠采样因子 = ’);
length(nn1)
y = interp(x,L)
[b,a] = butter(N, Wn, 's’);
get(gfp,'units');
set(gfp,’position’,[100 100 400 300]);
fx1=fft(xs1)
abs(fx2(n2+1))
y = resample(x,L,M);
四、实验内容与方法
1. 验证性实验
1) 正弦信号的采样
MATLAB程序:
clf;
t = 0:0。0005:1;
f = 13;
xa = cos(2*pi*f*t);
subplot(2,1,1)
plot(t,xa);grid
xlabel(’时间, msec');ylabel(’幅值');
title('连续时间信号 x_{a}(t)');
axis([0 1 -1.2 1.2])
subplot(2,1,2);
T = 0。1;
n = 0:T:1;
xs = cos(2*pi*f*n);
k = 0:length(n)—1;
stem(k,xs);grid;
xlabel('时间,msec');ylabel(’幅值');
title(’离散时间信号 x[n]’);
axis([0 (length(n)—1) —1。2 1。2])
正弦信号的采样结果如图4。3所示。
图5-3 正弦信号的采样
2)采样与重构
MATLAB程序:
clf;
T = 0.1;f = 13;
n = (0:T:1)';
xs = cos(2*pi*f*n);
t = linspace(—0.5,1.5,500)’;
ya = sinc((1/T)*t(:,ones(size(n))) — (1/T)*n(:,ones(size(t)))')*xs;
plot(n,xs,'o',t,ya);grid;
xlabel(’时间, msec’);ylabel('幅值’);
title('重构连续信号 y_{a}(t)');
axis([0 1 -1.2 1。2]);
正弦信号的采样与重构结果如图4。4所示。
图5-4 正弦信号的采样与重构结
3)采样的性质
MATLAB程序:
clf;
t = 0:0。005:10;
xa = 2*t。*exp(—t);
subplot(2,2,1)
plot(t,xa);grid
xlabel('时间信号, msec’);ylabel(’幅值');
title(’连续时间信号 x_{a}(t)');
subplot(2,2,2)
wa = 0:10/511:10;
ha = freqs(2,[1 2 1],wa);
plot(wa/(2*pi),abs(ha));grid;
xlabel(’频率, kHz');ylabel(’幅值');
title(’|X_{a}(j\Omega)|');
axis([0 5/pi 0 2]);
subplot(2,2,3)
T = 1;
n = 0:T:10;
xs = 2*n.*exp(—n);
k = 0:length(n)—1;
stem(k,xs);grid;
xlabel(’时间 n');ylabel('幅值');
title(’间散时间信号 x[n]');
subplot(2,2,4)
wd = 0:pi/255:pi;hd = freqz(xs,1,wd);
plot(wd/(T*pi), T*abs(hd));grid;
xlabel(’频率, kHz’);ylabel(’幅值');
title('|X(e^{j\omega})|');axis([0 1/T 0 2])
信号采样的性质如图4.5所示.
图5-5 信号采样的性质
4)模拟低通滤波器设计
MATLAB程序:
clf;
Fp = 3500;Fs = 4500;
Wp = 2*pi*Fp; Ws = 2*pi*Fs;
[N, Wn] = buttord(Wp, Ws, 0.5, 30,'s’);
[b,a] = butter(N, Wn, ’s');
wa = 0:(3*Ws)/511:3*Ws;
h = freqs(b,a,wa);
plot(wa/(2*pi), 20*log10(abs(h)));grid
xlabel(’Frequency, Hz’);ylabel(’Gain, dB’);
title('Gain response');
axis([0 3*Fs -60 5]);
模拟低通滤波器的设计结果如图4.6所示
图5-6所示 模拟低通滤波器的设计
5)时域过采样
MATLAB程序:
clf;
n=0:50;
x = sin(2*pi*0。12*n);
y=zeros(1,3*length(x));
y([1:3:length(y)])=x;
subplot(2,1,1)
stem(n,x);
title(’输入序列’);
subplot(2,1,2)
stem(n,y(1:length(x)));
title(’输出序列');
离散信号的时域过采样结果如图4。7所示。
图5-7 离散信号的时域过采样
6)时域欠采样
MATLAB程序:
clf;
n=0:49;
m=0:50*3—1;
x = sin(2*pi*0。042*m);
y=x([1:3:length(x)]);
subplot(2,1,1)
stem(n,x(1:50));axis([0 50 -1。2 1。2]);
title('输入序列’);
subplot(2,1,2)
stem(n,y); axis([0 50 —1.2 1.2]);
title(’输出序列');
离散信号的时域欠采样结果如图4。8所示.
图5-8 离散信号的时域欠采样
7)频域过采样
MATLAB程序:
freq = [0 0。45 0。5 1];
mag = [0 1 0 0];
x = fir2(99, freq, mag);
[Xz, w] = freqz(x, 1, 512);
Subplot(2,1,1);
plot(w/pi, abs(Xz)); grid
title(’输入谱’);
Subplot(2,1,2);
L = input('过采样因子 = ');
y = zeros(1, L*length(x));
y([1: L: length(y)]) = x;
[Yz, w] = freqz(y, 1, 512);
plot(w/pi, abs(Yz)); axis([0 1 0 1]);grid
title(’输出谱’);
信号的频域欠采样结果如图4.9所示.
图5-9 信号的频域欠采样
8)频域欠采样
freq = [0 0。42 0。48 1];
mag = [0 1 0 0];
x = fir2(101, freq, mag);
[Xz, w] = freqz(x, 1, 512);
Subplot(2,1,1);
plot(w/pi, abs(Xz)); grid
title('输入谱');
M= input(’欠采样因子 = ’);
y=x([1:M: length(x)]);
[Yz, w] = freqz(y, 1, 512);
Subplot(2,1,2);
plot(w/pi, abs(Yz));grid
title('输出谱’);
信号的频域欠采样结果如图4.10所示。
图5-10 信号的频域欠采样
9)采样过程演示
MATLAB程序:
clf;
M = input(’欠采样因子 = ’);
n = 0:99;
x = sin(2*pi*0.043*n) + sin(2*pi*0.031*n);
y = decimate(x,M,’fir’);
gfp=figure;
get(gfp,'units');
set(gfp,’position’,[100 100 400 300]);
subplot(2,1,1);
stem(n,x(1:100));
title(’输入序列’);
subplot(2,1,2);
m = 0:(100/M)-1;
stem(m,y(1:100/M));
title('输出序列’);
信号的采样结果如图4。11所示。
图5-11 信号的采样结果
10)插值过程
MATLAB程序:
clf;
L = input('过采样因子 = ');
n = 0:49;
x = sin(2*pi*0.043*n) + sin(2*pi*0.031*n);
y = interp(x,L);
subplot(2,1,1);
stem(n,x(1:50));
title('输入序列');
subplot(2,1,2);
m = 0:(50*L)-1;
stem(m,y(1:50*L));
title(’输出序列’);
信号的插值过程结果如图4。12所示
图5-12 信号的插值过程
11)两速率采样
MATLAB程序:
clf;
L = input('过采样因子= ’);
M = input('欠采样因子= ’);
n = 0:29;
x = sin(2*pi*0.43*n) + sin(2*pi*0。31*n);
y = resample(x,L,M);
subplot(2,1,1);
stem(n,x(1:30));
axis([0 29 -2.2 2。2]);
title('输入序列');
subplot(2,1,2);
m = 0:(30*L/M)—1;
stem(m,y(1:30*L/M));
axis([0 (30*L/M)-1 -2.2 2。2]);
title(’输出序列’);
输入不同的过采样因子和欠采样因子就可以得到不同的输出。图4。13给定的是其中一种输出结果。
图5-13 信号的两速率采样
2. 程序设计实验
设计一模拟信号:x(t)=3sin(2π·f·t)。采样频率为5120Hz,取信号频率f=150Hz(正常采样)和f=3000Hz(欠采样)两种情况进行采样分析.
实验程序:
clf;
t = 0:0.0000005:0。02;
f1= 150;
f2=3000;
xa1= 3*sin(2*pi*f1*t);
xa2= 3*sin(2*pi*f2*t);
fs=5120;
T = 1/fs;
nn1= -1:T:1;
nn2= -1:T:1;
xs1=3*sin(2*pi*f1*nn1);
xs2=3*sin(2*pi*f2*nn2);
k1= 0:length(nn1)-1;
k2= 0:length(nn2)-1;
subplot(3,2,1)
plot(t,xa1);grid
xlabel('时间, msec');ylabel(’幅值’);
title(’连续时间信号 x_{a1}(t)');
axis([0 0。02 —3 3])
subplot(3,2,2)
plot(t,xa2);grid
xlabel(’时间, msec’);ylabel('幅值');
title(’连续时间信号 x_{a2}(t)’);
axis([0 0.001 —3 3])
subplot(3,2,3);
stem(k1,xs1);grid;
xlabel('时间,msec’);ylabel('幅值’);
title('离散时间信号 x1[n]');
axis([0 100 -3 3])
subplot(3,2,4);
stem(k2,xs2);grid;
xlabel(’时间,msec’);ylabel(’幅值');
title(’离散时间信号 x2[n]');
axis([0 5 —3 3])
subplot(3,2,5)
N1=length(xs1);
fx1=fft(xs1);
df1=fs/N1;
n1=0:N1/2;
f1=n1*df1;
plot(f1,abs(fx1(n1+1))*2/N1); grid;
set(gca,'XTickMode',’manual',’XTick’,[0,50,100,150,200,250,300])
set(gca,’YTickMode',’manual’,’YTick’,[1,2,3,4])
title('离散时间信号 x1[n]和频谱图');
axis([0 300 0 4])
subplot(3,2,6)
N2=length(xs2);
fx2=fft(xs2);
df2=fs/N2;
n2=0:N2/2;
f2=n2*df2;
plot(f2,abs(fx2(n2+1))*2/N2); grid;
set(gca,’XTickMode','manual',’XTick',[100,500,1000,1500,2120,2500])
set(gca,’YTickMode',’manual’,’YTick',[1,2,3,4])
title(’离散时间信号 x2[n]和频谱图’);
执行后得到如图4。14:
图5-14 两种信号的采样及频谱图
从图4.14中我们可以看出,当正常采样时,频谱图上和原信号频谱一样,冲激点在f=150Hz片,而且采样时,发生了频谱混迭,负频上的-3000Hz搬移到了正频上的2120Hz。
五、实验报告要求
简述实验目的及原理,按实验步骤附上相应的信号波形和频谱曲线,说明采样频率变化对信号时域和频域特性的影响,总结实验得出的主要结论。参考比较MATLAB版的相应实验,你可以得出哪些结论?
六、思考题
(1)x(t) 若信号频率为5000Hz,请问本实验中的模拟信号采样后的混迭频率是多少Hz ? 分析一200Hz的方波信号,采样频率=500Hz,用谱分析功能观察其频谱中的混迭现象。为什么会产生混迭?
(2)6。 在时域抽样定理中,为什么要求被抽样信号必须是带限信号?如果频带是无限的应如何处理?
展开阅读全文