我们取理想低通的截止频率?c=?m。下面程序实现对信号f(t)=Sa(t)的采样及由该采样信号恢复重建Sa(t):
例5-1 Sa(t)的临界采样及信号重构;
wm=1; %信号带宽
wc=wm; %滤波器截止频率 Ts=pi/wm; %采样间隔
ws=2*pi/Ts; %采样角频率 n=-100:100; %时域采样电数 nTs=n*Ts %时域采样点 f=sinc(nTs/pi);
Dt=0.005;t=-15:Dt:15;
fa=f*Ts*wc/pi*sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t)))); %信号重构 t1=-15:0.5:15; f1=sinc(t1/pi); subplot(211); stem(t1,f1); xlabel('kTs'); ylabel('f(kTs)');
title('sa(t)=sinc(t/pi)的临界采样信号'); subplot(212); plot(t,fa) xlabel('t'); ylabel('fa(t)');
title('由sa(t)=sinc(t/pi)的临界采样信号重构sa(t)'); grid;
例5-2 Sa(t)的过采样及信号重构和绝对误差分析
程序和例4-1类似,将采样间隔改成Ts=0.7*pi/wm , 滤波器截止频率该成wc=1.1*wm , 添加一个误差函数 wm=1;
wc=1.1*wm; Ts=0.7*pi/wm; ws=2*pi/Ts; n=-100:100; nTs=n*Ts
f=sinc(nTs/pi);
Dt=0.005;t=-15:Dt:15;
fa=f*Ts*wc/pi*sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t)))); error=abs(fa-sinc(t/pi)); %重构信号与原信号误差 t1=-15:0.5:15; f1=sinc(t1/pi); subplot(311);
16
stem(t1,f1); xlabel('kTs'); ylabel('f(kTs)');
title('sa(t)=sinc(t/pi)的采样信号'); subplot(312); plot(t,fa) xlabel('t'); ylabel('fa(t)');
title('由sa(t)=sinc(t/pi)的过采样信号重构sa(t)'); grid;
subplot(313); plot(t,error); xlabel('t');
ylabel('error(t)');
title('过采样信号与原信号的误差error(t)');
例5-3 Sa(t)的欠采样及信号重构和绝对误差分析
程序和例4-2类似,将采样间隔改成Ts=1.5*pi/wm , 滤波器截止频率该成wc=wm=1
三、上机实验内容
1.调试实验原理中所述的相关程序;
2.设f(t)=0.5*(1+cost)*(u(t+pi)-u(t-pi)) ,由于不是严格的频带有限信号,但其频谱大部分集中在[0,2]之间,带宽wm可根据一定的精度要求做一些近似。试根据以下两种情况用 MATLAB实现由f(t)的抽样信号fs(t)重建f(t) 并求两者误差,分析两种情况下的结果。 (1) wm=2 , wc=1.2wm , Ts=1; (2) wm=2 , wc=2 , Ts=2.5
17
实验五 信号与系统复频域(S域和Z域)分析
(设计型)
一、实验目的
1.学会用MATLAB进行部分分式展开; 2.学会用MATLAB分析LTI系统的特性; 3.学会用MATLAB进行Laplace正、反变换。 4.学会用MATLAB画离散系统零极点图; 5.学会用MATLAB分析离散系统的频率特性;
二、实验原理及内容
1.用MATLAB进行部分分式展开
用MATLAB函数residue可以得到复杂有理分式F(s)的部分分式展开式,其调用格式为 ?r,p,k??residue(num,den)
其中,num,den分别为F(s)的分子和分母多项式的系数向量,r为部分分式的系数,p为极点,k为F(s)中整式部分的系数,若F(s)为有理真分式,则k为零。
例6-1 用部分分式展开法求F(s)的反变换 F(s)?s?2 32s?4s?3s解:其MATLAB程序为 format rat; num=[1,2]; den=[1,4,3,0];
[r,p]=residue(num,den)
程序中format rat是将结果数据以分数形式显示
?1?0.56 F(s)可展开为 F(s)?3??ss?1s?3所以,F(s)的反变换为 f(t)???e?e6?322?21?t1?3t?ut( )??2.用MATLAB分析LTI系统的特性
系统函数H(s)通常是一个有理分式,其分子和分母均为多项式。计算H(s)的零极点可以应用MATLAB中的roots函数,求出分子和分母多项式的根,然后用plot命令画图。
在MATLAB中还有一种更简便的方法画系统函数H(s)的零极点分布图,即用pzmap函数画图。其调用格式为
pzmap(sys)
sys表示LTI系统的模型,要借助tf函数获得,其调用格式为
18
sys=tf(b,a)
式中,b和a分别为系统函数H(s)的分子和分母多项式的系数向量。
(j?)如果已知系统函数H(s),求系统的单位冲激响应h(t)和频率响应H可以用以前介绍过的impulse和freqs函数。 例6-2 已知系统函数为 H(s)=1
s3?2s2?2s?1(j?)试画出其零极点分布图,求系统的单位冲激响应h(t)和频率响应H,并判断系统
是否稳定。
解:其MATLAB程序如下: num=[1]; den=[1,2,2,1]; sys=tf(num,den); figure(1);pzmap(sys); t=0:0.02:10;
h=impulse(num,den,t); figure(2);plot(t,h)
title('Impulse Response') [H,w]=freqs(num,den); figure(3);plot(w,abs(H)) xlabel('\\omega')
title('Magnitude Response')
3.用MATLAB进行Laplace正、反变换
MATLAB的符号数学工具箱提供了计算Laplace正、反变换的函数Laplace和ilaplace,其调用格式为
F?laplace(f)
f?ilaplace(F)上述两式右端的f和F分别为时域表示式和s域表示式的符号表示,可以应用函数sym实现,其调用格式为
S=sym(A)
式中,A为待分析表示式的字符串,S为符号数字或变量。 例6-3 试分别用Laplace和ilaplace函数求 (1)f(t)?esin(at)u(t)的Laplace变换;
?ts2(2)F(s)?2的Laplace反变换。
s?1解:(1)其程序为
f=sym('exp(-t)*sin(a*t)'); F=laplace(f) 或
syms a t
F=laplace(exp(-t)*sin(a*t))
19
(2)其程序为
F=sym('s^2/(s^2+1)'); ft=ilaplace(F) 或 syms s
ft= ilaplace(s^2/(s^2+1)) 4.离散系统零极点图
离散系统可以用下述差分方程描述:
?ay(k?i)??bii?0m?0NMmf(k?m)
Y(z)b0?b1z?1?...?bMz?MZ变换后可得系统函数:H(z)? ?F(z)a0?a1z?1?...?aNz?N用MATLAB提供的root函数可分别求零点和极点,调用格式是
p=[a0,a1…an],q=[b0,b1…bm,0,0…0], 补0使二者维数一样。画零极点图的方法有多种,可以用MATLAB函数[z,p,k]=tf2zp(b,a)和zplane(q,p),也可用plot命令自编一函数ljdt.m,画图时调用。
function ljdt(A,B)
% The function to draw the pole-zero diagram for discrete system
p=roots(A); %求系统极点 q=roots(B); %求系统零点 p=p'; %将极点列向量转置为行向量 q=q'; %将零点列向量转置为行向量 x=max(abs([p q 1])); %确定纵坐标范围 x=x+0.1; y=x; %确定横坐标范围 clf hold on
axis([-x x -y y]) %确定坐标轴显示范围 w=0:pi/300:2*pi; t=exp(i*w); plot(t) %画单位园 axis('square') plot([-x x],[0 0]) %画横坐标轴 plot([0 0],[-y y]) %画纵坐标轴 text(0.1,x,'jIm[z]') text(y,1/10,'Re[z]')
plot(real(p),imag(p),'x') %画极点 plot(real(q),imag(q),'o') %画零点 title('pole-zero diagram for discrete system') %标注标题 hold off
例6-4 求系统函数零极点图H(z)?
20
z?1 543z?z?1