信号与系统实验指导书(2008528) 下载本文

图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];

25

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所示。

26

图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);

27

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

28