1、基于matlab的信号采样与离散系统的时域分析原理 1、 信号采样与重建的原理取样定理:论述了在一定条件下,一个连续信号完全可以用离散样本值表示。这些样本值包含了该连续信号的全部信息,利用这些样本值可以恢复原信号。可以说,取样定理在连续信号与离散信号之间架起了一座桥梁。为其互为转换提供了理论依据。 所谓“取样”就是利用取样脉冲序列s(t)从连续信号f(t)中“抽取”一系列离散样本值的过程。这样得到的离散信号称为取样信号fs(t) 。画fs(t)的频谱时,设定S 2m ,这时其频谱不发生混叠,因此能设法(如利用低通滤波器)从Fs (jw)中取出F(jw),即从fs(t)中恢复原信号f(t); 否
2、则将发生混叠。设有限时宽余弦信号f(t)=cos(2t/3)(0t40),用它近似理想余弦信号,用MATLAB编程求该信号和其采样信号的频谱,对比观察过采样和欠采样状态。采样周期通过键盘输入。程序:% 时域采样定理display(奈奎斯特周期0.25秒,Ts0.2.5,欠采样);display(Please input the value of sample period);Ts = input(Ts = );%绘制有限长余弦信号y=cos(2/3*pi*t)t = 0:0.01:40;y = cos(2/3*pi*t);subplot(221);plot(t,y);axis(0 6 -1.1
3、 1.1);xlabel(t 单位:s,Fontsize,8);title(f(t);line(0 6,0 0,color,0 0 0);%数值求解余弦信号的频谱N = 300;W = 2*pi*5;k = -N:N;w = k*W/N;Y = 0.01*y*exp(-j*t*w); %求f(t)的傅里叶变换F1()Y = abs(Y);subplot(222);plot(w/pi,Y)axis(-2,2,0,pi*7+0.2);title(F(jomega);xlabel(omega 单位:pi);%采样后的余弦信号subplot(223);plot(t,y,b:); %绘制包络hold o
4、nt2=0:Ts:40;y2=cos(2/3*pi*t2);stem(t2,y2);axis(0 6 -1.1 1.1);xlabel(t 单位:s,Fontsize,8);title(fs(t);hold off%采样后余弦信号的频谱Y2 = Ts*y2*exp(-j*t2*w);Y2 = abs(Y2);subplot(224);plot(w/pi,Y,b) %蓝色绘制原信号频谱xlabel(omega 单位:pi);title(Fs(jomega);hold onplot(w/pi,Y2,r); %红色绘制采样信号频谱axis(-2,2,0,pi*10);hold off%end2. 离
5、散时间系统(1)线性时不变 (LTI) 离散时间系统用常系数线性差分方程进行描述: 其中,fk和yk分别表示系统的输入和输出,N=max(n,m)是差分方程的阶数。 系统的零状态响应就是在系统初始状态为零条件下微分方程的解。在零初始状态下,MATLAB控制系统工具箱提供了一个filter函数,可以计算差分方程描述的系统的响应,其调用形式为: y=filter(b,a,f)其中,、分别是系统差分方程左、右端的系数向量,f表示输入向量,y表示输出向量。注意,输出序列的长度与输入序列的长度相同。 (2)离散系统的冲激响应、阶跃响应分别是输入信号为和所对应的零状态响应。MATLAB控制系统工具箱专门提
6、供了两个函数求解离散系统的冲激响应和阶跃响应。 冲激响应:h = impz(b, a, K),其中的h表示系统的单位序列响应,、分别是系统差分方程左、右端的系数向量,K表示输出序列的时间范围。阶跃响应:g = stepz(b, a, N),其中的g表示系统的单位阶跃序列响应,b和a的含义与上相同,N表示输出序列的长度。 (3)卷积是信号与系统中一个最基本、也是最重要的概念之一。在时域中,对于LTI 离散时间系统,其零状态响应等于输入信号与系统冲激响应的卷积;而利用卷积定理,这种关系又对应频域中的乘积。 MATLAB信号处理工具箱提供了一个计算两个离散序列卷积和的函数conv。设向量a、b代表待
7、卷积的两个序列,则c = conv(a, b)就是a与b卷积后得到的新序列。 我们知道两个序列卷积以后,一般而言所得新序列的时间范围、序列长度都会发生变化。例如设f1(n)长度为5,3n1;f2(n)长度为7,2n8;则卷积后得到的新序列长度为5+7-1=11,且有在1n9时,新序列的值不为零。 三 1. 运行例题参考程序,对比观察过采样(Ts=0.05s)和欠采样状态(Ts=3.0s)。display(周期1.5秒,Ts1.5,欠采样);扩展:wm=2/3*piwc=wmws=60*wmws2=1*wmts=2*pi/wsts2=2*pi/ws2n=-300:300nts=n*tsnts2=
8、n*ts2f=cos(2/3*pi*nts)f2=cos(2/3*pi*nts2)dt=0.005t=0:dt:6y=cos(2/3*pi*t)fa=f*ts*wc/pi*sinc(wc/pi)*(ones(length(nts),1)*t-nts*ones(1,length(t);error=abs(fa-cos(2/3*pi*t)fa2=f2*ts*wc/pi*sinc(wc/pi)*(ones(length(nts),1)*t-nts*ones(1,length(t);error2=abs(fa2-cos(2/3*pi*t)t1=0:0.05:6f1=cos(2/3*pi*t1)subp
9、lot(221)stem(t1,f1)xlabel(kts)ylabel(f(kts)title(cos(2/3*pi*t)的过采样信号)gridsubplot(222)plot(t,error)xlabel(t)ylabel(error(t)title(过采样信号重建与源信号的误差error(t)gridsubplot(223)plot(t,y,b:); hold ont3=0:3:6f3=cos(2/3*pi*t3)stem(t3,f3)xlabel(kts)ylabel(f(kts)axis(0 6 -1.1 1.1);title(cos(2/3*pi*t)的欠采样信号)gridsubp
10、lot(224)plot(t,error2)xlabel(t)ylabel(error2(t)title(欠采样信号重建与源信号的误差error(t)grid2. 设有限时宽周期信号f(t)=5+cos(2t)+cos(4t)(0t40),用MATLAB编程求该信号和其采样信号的频谱,对比观察过采样和欠采样状态。display(Please input the value of sample period);Ts = input(Ts = );t = 0:0.01:40;y =5+cos(2*pi*t)+cos(4*pi*t);subplot(221);plot(t,y);axis(0 6 3
11、.1 7.1);xlabel(t 单位:s,Fontsize,8);title(f(t);line(0 6,0 0,color,0 0 0);%数值求解余弦信号的频谱N = 300;W = 2*pi*5;k = -N:N;w = k*W/N;Y = 0.01*y*exp(-j*t*w); %求f(t)的傅里叶变F1()Y = abs(Y);subplot(222);plot(w/pi,Y)axis(-2,2,0,pi*10+0.2);title(F(jomega);xlabel(omega 单位:pi);%采样后的余弦信号subplot(223);plot(t,y,b:); %绘制包络hold
12、 ont2=0:Ts:40;y2=5+cos(2*pi*t2)+cos(4*pi*t2);stem(t2,y2);axis(0 6 3.1 7.1);xlabel(t 单位:s,Fontsize,8);title(fs(t);hold off%采样后余弦信号的频谱Y2 = Ts*y2*exp(-j*t2*w);Y2 = abs(Y2);subplot(224);plot(w/pi,Y,b) %蓝色绘制原信号频谱xlabel(omega 单位:pi);title(Fs(jomega);hold onplot(w/pi,Y2,r); %红色绘制采样信号频谱axis(-2,2,0,pi*10);ho
13、ld off%endTS=0.05TS=1已知系统的差分方程为,输入为。计算系统的零状态响应、单位序列响应和阶跃响应, t=0:10a=1 -0.7 0.1b=7 -2 0f=0.4.tsubplot(131)y=filter(b,a,f)stem(t,y)title(零状态响应yk)xlabel(k)ylabel(yk)grid onsubplot(132)h=impz(b,a,t)stem(t,h)grid ontitle(单位序列响应hk)xlabel(k)ylabel(hk)subplot(133)g = stepz(b, a, 11)stem(t,g)grid onxlabel(k)
14、ylabel(g(k)title(阶跃响应gk)3. 已知系统的单位序列响应为=,输入信号为。利用MATLAB计算: a. b. t=0:10h=u(t)-u(t-5)f=(0.5.t).*(u(t)-u(t-5)f2=(0.5.(t-2).*(u(t-2)-u(t-7)c = conv(h, f)c2=conv(h, f2)subplot(221)stem(t,h)grid onxlabel(k)ylabel(hk)title(hk) subplot(222)stem(t,f)grid onxlabel(k)ylabel(fk)title(fk) subplot(223)stem(c)grid onxlabel(k)ylabel(y1k)title(y1k=hk*fk)subplot(224)stem(c2)grid onxlabel(k)ylabel(y2k)title(y2k=hk*fk-2)