信号与系统5.docx
《信号与系统5.docx》由会员分享,可在线阅读,更多相关《信号与系统5.docx(14页珍藏版)》请在冰豆网上搜索。
信号与系统5
信号与系统5
第五章信号的采样与恢复的仿真
13电子2班
5.1实验目的
本实验通过MATLAB语言编程来实现,利用仿真来实现信号的采样与恢复的功能。
对连续信号进行采样,在满足采样定理和不满足采样定理这两种情况下对连续信号和采样信号进行频谱分析;从采样信号中恢复原信号,对不同采样频率下的恢复信号进行比较分析,验证香农采样定理。
郑泽鸿[1**********]4
5.2实验要求
(1)通过编程,产生连续时间信号。
(2)以升余弦信号为例,对产生的连续时间信号进行采样,并进行频谱分析,和连续信号的频谱进行分析比较。
改变采样频率,重复以上过程。
(3)设计低通滤波器,采样信号通过低通滤波器,恢复原连续信号,对不同采样频率下的恢复信号进行比较,分析信号的失真情况。
5.3实验原理
香农采样定理:
为了不失真地恢复模拟信号,采样频率应该不小于模拟信号频谱中最高频率的2倍,即Fs
≥2Fmax。
Eπ⋅t
)]升余弦信号:
f(t)=⋅[1+cos(
2τ
E取1,τ取π,Ts分别取1,2。
2
(0≤t≤τ)
π
sin(t)
=sinc(t)抽样信号:
Sa(t)=t
(t≤5)
5.4实验内容与实验步骤
5.4.1信号抽样
已知升余弦脉冲信号为f(t)=
E⎡⎛πt⎫⎤1+cos⎪⎥(0≤t≤τ),实现该信号经冲激脉冲抽⎢s⎣τ⎝⎭⎦
样后得到的抽样信号fs(t)及其频谱。
假设参数E=1,τ=π,抽样间隔Ts=1。
MATLAB程序如下:
创建函数文件uct.m,uct用于表示单位阶跃函数。
functionf=uct(t)f=(t>=0);
主程序如下:
>>%%%%%产生升余弦脉冲信号%%%%%>>Ts=1;>>dt=0.1;
%抽样间隔Ts。
%对时间轴t进行切分,每隔0.1产生一个曲线点。
%时间轴的范围为-4~4,每隔dt产生一个点。
1
[1+cos(t1)],-π≤t1≤+π。
2
%当t≥0时,f=f(t),当t<0时,f=0,即求出f(t)⋅u(t)。
>>t1=[-4:
dt:
4];
>>ft=((1+cos(t1))/2).*(uct(t1+pi)-uct(t1-pi));
%该升余弦脉冲信号为f(t)=
>>subplot(2,2,1);>>plot(t1,ft);>>gridon;
%在图像窗口内分成四份,在第一份中放入曲线。
%绘制曲线,横坐标为t1,纵坐标为ft,画出曲线f(t)。
%在坐标轴内添加网格。
%坐标轴范围:
x轴为-4~4,y轴为-0.1~1.1。
%标明x轴为Time(时间),单位为sec(秒)。
%标明y轴为f(t),单位为信号强度。
%标题写“升余弦脉冲信号”。
>>axis([-4,4,-0.1,1.1]);>>xlabel('Time(sec)');>>ylabel('f(t)');
>>title('升余弦脉冲信号');
%%%%%计算升余弦脉冲信号的频谱%%%%%>>N=500;
%N为500。
%k的范围为-N~N,每隔dt(0.1)生成一个点。
%角频率ω=
2π2πk⋅π。
==
2N⋅dtTN⋅dtk
>>k=[-N:
N];
>>w=pi*k/(N*dt);
>>Fw=dt*ft*exp(-j*t1'*w);%频谱>>subplot(2,2,2);
f(ω)=dt⋅f(t)⋅e-j⋅t1⋅ω。
%在图像窗口内分成四份,在第二份中放入曲线。
>>plot(w,abs(Fw));>>gridon;
%绘制曲线,横坐标为w,纵坐标为|Fw|,画出曲线|F(w)|。
%在坐标轴内添加网格。
%此时发现频谱曲线变得很窄,很多w值对应函数值为0,对x轴进行展宽。
>>axis([-10,10,-0.2,1.1*pi]);%坐标轴范围:
x轴为-10~10,y轴为-0.2~1.1π。
>>xlabel('w');
%标明x轴为w(角频率)。
%标明y轴为F(w)(频谱)。
>>ylabel('F(w)');
>>title('升余弦脉冲信号的频谱');%标题写“升余弦脉冲信号的频谱”。
%%%%%对升余弦脉冲信号进行抽样%%%%%>>t2=[-4:
Ts:
4];
%时间轴的范围为-4~4,每隔Ts(抽样间隔)产生一个点。
%离散的升余弦脉冲信号。
1
[1+cos(t2)],-π≤t2≤+π。
2
>>fn=((1+cos(t2))/2).*(uct(t2+pi)-uct(t2-pi));
%该升余弦脉冲信号为f(n)=
>>subplot(2,2,3);>>plot(t1,ft);>>holdon;
%在图像窗口内分成四份,在第三份中放入曲线。
%绘制曲线,横坐标为t1,纵坐标为ft,画出曲线f(t)。
%保持图像,在同位置上继续画图。
%绘制脉冲图,横坐标为t2,纵坐标为fn,画出脉冲f(n)。
%在坐标轴内添加网格。
%坐标轴范围:
x轴为-4~4,y轴为-0.1~1.1。
%标明x轴为Time(时间),单位为sec(秒)。
%标明y轴为F(n)(离散信号)。
%标题写“抽样后的升余弦脉冲序列”。
>>stem(t2,fn);>>gridon;
>>axis([-4,4,-0.1,1.1]);>>xlabel('Time(sec)');>>ylabel('f(n)');
>>title('抽样后的升余弦脉冲序列');
%%%%%计算升余弦脉冲序列的频谱%%%%%>>Fsw=Ts*fn*exp(-j*t2'*w);%频谱>>subplot(2,2,4);
fs(ω)=Ts⋅f(n)⋅e-j⋅t2⋅ω。
%在图像窗口内分成四份,在第四份中放入曲线。
%绘制曲线,横坐标为w,纵坐标为|Fsw|,画出曲线|Fs(w)|。
%在坐标轴内添加网格。
>>plot(w,abs(Fsw));>>gridon;
>>axis([-10,10,-0.2,1.1*pi]);%坐标轴范围:
x轴为-4~4,y轴为-0.1~1.1π。
>>xlabel('w');
%标明x轴为w(角速度)。
%表明y轴为Fs(w)(抽样信号)。
>>ylabel('Fs(w)');
>>title('升余弦脉冲序列的频谱');%标题写“升余弦脉冲序列的频谱”。
程序运行结果如图1所示,可以明显看出升余弦脉冲信号的频谱在抽样后发生了周期延拓,频域上该周期为
2π
,此处Ts=1。
Ts
图1升余弦脉冲信号抽样前后的频谱比较(抽样间隔Ts=1时)
π
,运行程序,可以得到图2。
2
同理,令抽样间隔Ts=
图2升余弦脉冲信号抽样前后的频谱比较(抽样间隔Ts=π/2时)
同理,令抽样间隔Ts2,运行程序,可以得到图3。
图3升余弦脉冲信号抽样前后的频谱比较(抽样间隔Ts=2时)
1
[1+cos(t)](-π≤t≤+π),抽样间2
1
[1+cos(t)]所得,其有效时间段2
根据图1、图2、图3,对于同一个升余弦脉冲信号f(t)=
隔时间Ts不同,抽样后所得到信号的频谱不同。
由图1(或图2,或图3)可知,原始信号由升余弦函数f(t)=
为-π≤t≤+π,其余时间段信号幅值为0。
对该升余弦函数进行频谱分析,将时间域转换为复频域,当-2≤ω≤+2时,频谱曲线呈一个明显的尖顶脉冲;当ω=0时,F(ω)=π且为最大值。
当抽样间隔Ts=1时,由图1可知,在-4≤t≤+4这个区间内共有9个采样点,分别位于-4、
-3、-2、-1、0、1、2、3、4,抽样后再对其进行频谱分析,将时间域转换为复频域,可以看出,在
-10≤ω≤+10内,频谱曲线呈现三个明显的尖顶脉冲;当ω=-2π、ω=0、ω=+2π时,
Fs(ω)=π且为最大值。
当抽样间隔Ts=π/2时,由图2可知,在-4≤t≤+4这个区间内共有6个采样点,分别位于
-4、-2.4、-0.85、0.7、2.3、3.9,抽样后再对其进行频谱分析,将时间域转换为复频域,可以看出,在-10≤ω≤+10内,频谱曲线呈现五个明显的尖顶脉冲,分别位于[-10,-6]、[-6,-2]、[-2,2]、[2,6]、[6,10];当ω=-8、ω=-4、ω=0、ω=+4、ω=+8时,Fs(ω)=π且为最大值。
当抽样间隔Ts=2时,由图3可知,在-4≤t≤+4这个区间内共有5个采样点,分别位于-4、
-2、0、2、4,抽样后再对其进行频谱分析,将时间域转换为复频域,可以看出,在-10≤ω≤+10
7π5π5π3π3ππ,-]、[-,-]、[-,-]、内,频谱曲线呈现七个明显的尖顶脉冲,分别位于[-222222
πππ3π3π5π5π7π
[-,+]、[+,+]、[+,+]、[+,+];ω=-2π、ω=0、ω=-π、当ω=-3π、22222222
ω=+π、ω=+2π、ω=+3π时,Fs(ω)=π且为最大值。
汇总图1、图2、图3中的后两个小图,即抽样后的升余弦脉冲序列和相应的频谱图。
图4抽样后的升余弦脉冲序列和相应的频谱图(Ts=1,π/2,2)
由图4可知,当抽样间隔Ts越大时,抽样点个数越少,其频谱曲线变化幅度大,且信号失真
度越高;反之,当抽样间隔Ts越小时,抽样点个数越多,其频谱曲线变化幅度小,且信号失真度越低。
因此,如果为了使抽样后所得到的信号的失真程度较小,应该减小抽样间隔,即提高对信号的抽样频率。
5.4.2抽样定理
在实验5.4.1中,信号的频谱大部分集中在[0,2]之间,即截止频率为ωm=2,因此奈奎斯特间隔Ts=
1π
=,抽样结果如图2所示(临界抽样时信号的频谱比较)。
2fm2
5.4.3信号的重建
为了从频谱中无失真地恢复原始信号,可采用截止频率为ωc≥ωm的理想低通滤波器,此处设置抽样间隔Ts=1,低通滤波器的截止频率ωc=1.2ωm,并计算重建信号与升余弦脉冲信号的绝对误差。
补充程序,连接上述对应的程序:
>>Ts=1;>>wm=2;
%抽样间隔Ts。
%升余弦脉冲信号的带宽ωm。
%理想低通滤波器的截止频率ωc。
%时域计算点数,在-100~100之间生成201个点。
%时域抽样点nTs=时域计算点×抽样间隔。
>>wc=1.2*wm;>>n=-100:
100;>>nTs=n*Ts;
>>fs=((1+cos(nTs))/2).*(uct(nTs+pi)-uct(nTs-pi));
%该升余弦脉冲信号为f(s)=
%抽样信号。
1
[1+cos(n*Ts)],-π≤t1≤+π。
2
>>Ft=fs*Ts*wc/pi*sinc((wc/pi)*(ones(length(nTs),1)*t1-nTs'*ones(1,length(t1))));
%信号重建。
>>figure,subplot(3,1,1),plot(t1,ft),holdon,stem(nTs,fs),gridon;
%打开新的图形窗口,将图像窗口分为三份。
%在第一个小窗口内绘制升余弦脉冲信号曲线,%再加上阶跃信号及抽样点。
%将横坐标限制在-4~4之间,纵坐标限制在-0.1~1.1之间。
>>axis([-4,4,-0.1,1.1]);
>>xlabel('nTs'),ylabel('f(nTs)');%横坐标标上nTs,纵坐标标上f(nTs)。
>>title('f(nTs),Ts=1');
%标题写明为当Ts=1时的f(nTs)。
%在第二个小窗口内绘制抽样后恢复得到信号F(t)。
>>subplot(3,1,2),plot(t1,Ft),gridon;>>axis([-4,4,-0.1,1.1]);>>xlabel('t'),ylabel('f(t)')
%将横坐标限制在-4~4之间,纵坐标限制在-0.1~1.1之间。
%横坐标标上t,纵坐标标上f(t)。
%标题写明为从f(nTs)重构为f(t)。
>>title('Reconstructionoff(t)fromf(nTs)');>>er=abs(Ft-ft);
%求出抽样前后的误差,即抽样后的值减抽样前再取绝对值。
%在第三个小窗口内绘制误差曲线er(t)。
>>subplot(3,1,3),plot(t1,er),gridon;
>>xlabel('t'),ylabel('error(t)');%横坐标标为t,纵坐标标为error(t),表示误差量。
>>title('AbsoluteerrorofF(t)andf(t)')%标题写明为抽样前后的信号误差量的绝对值。
图5抽样信号的重建及误差分析(Ts=1)
在上述MATLAB程序的补充后,运行结果如图5所示。
从图中可知重建后的升余弦信号与原信号的误差在0.02以内。
同理,令抽样间隔Ts=到图7。
π
2
,运行程序,可以得到图6。
令抽样间隔Ts=2,运行程序,可以得
图6抽样信号的重建及误差分析(Ts=π/2)图7抽样信号的重建及误差分析(Ts=2)
由图5、图6、图7的对比,可以看出,当抽样间隔越大时,原始信号抽样后恢复所得到曲线的失真程度越大,误差也越大。
例如,当抽样间隔为1时,误差波动在0~0.02之间;当抽样间隔为π/2时,误差波动在0~0.04之间;当抽样间隔为2时,误差波动在0~0.4之间。
所以,验证了抽样定理,当抽样间隔小于等于奈奎斯特间隔(π/2)时,信号可以较好地恢复为原始信号。
5.5拓展实验
Sa(t)=
sint
,实现Sa(t)经冲激脉冲抽样后得到的抽样信号Sa(nTs)及其频谱,并利用Sa(nTs)重t
构Sa(t)信号。
>>%产生Sa信号>>Ts=1;>>dt=0.1;
%抽样间隔Ts。
%对时间轴t进行切分,每隔0.1产生一个曲线点。
%时间轴的范围为-4~4,每隔dt产生一个点。
sint
,-π≤t1≤+π。
t
>>t1=[-4:
dt:
4];
>>ft=(sin(t1)/t1).*(uct(t1+pi)-uct(t1-pi));
%Sa信号为f(t)=
>>subplot(2,2,1);
%在图像窗口内分成四份,在第一份中放入曲线。
>>plot(t1,ft);>>gridon;
%绘制曲线,横坐标为t1,纵坐标为ft,画出曲线f(t)。
%在坐标轴内添加网格。
%坐标轴范围:
x轴为-4~4,y轴为-0.1~0.5。
%标明x轴为Time(时间),单位为sec(秒)。
%标明y轴为f(t),单位为信号强度。
%标题写“Sa信号”。
>>axis([-4,4,-0.1,0.5]);>>xlabel('Time(sec)');>>ylabel('f(t)');
>>title('Sa信号');
>>%计算Sa信号的频谱>>N=500;
%N为500。
%k的范围为-N~N,每隔dt(0.1)生成一个点。
%角频率ω=
2π2πk⋅π。
==
TN⋅dtk
>>k=[-N:
N];
>>w=pi*k/(N*dt);
>>Fw=dt*ft*exp(-j*t1'*w);%频谱>>subplot(2,2,2);
f(ω)=dt⋅f(t)⋅e-j⋅t1⋅ω。
%在图像窗口内分成四份,在第二份中放入曲线。
%绘制曲线,横坐标为w,纵坐标为|Fw|,画出曲线|F(w)|。
%在坐标轴内添加网格。
>>plot(w,abs(Fw));>>gridon;
%此时发现频谱曲线变得很窄,很多w值对应函数值为0,对x轴进行展宽。
>>axis([-10,10,-0.1,0.5]);%坐标轴范围:
x轴为-10~10,y轴为-0.1~0.5。
>>xlabel('w');
%标明x轴为w(角频率)。
%标明y轴为F(w)(频谱)。
%标题写“Sa信号的频谱”。
>>ylabel('F(w)');
>>title('Sa信号的频谱');
>>%对Sa信号进行抽样>>t2=[-4:
Ts:
4];
%时间轴的范围为-4~4,每隔Ts(抽样间隔)产生一个点。
%离散的Sa信号。
sin(n⋅Ts)
,-π≤t2≤+π。
n⋅Ts
>>fn=(sin(t2)/t2).*(uct(t2+pi)-uct(t2-pi));
%Sa信号为f(n)=
>>subplot(2,2,3);>>plot(t1,ft);>>holdon;
%在图像窗口内分成四份,在第三份中放入曲线。
%绘制曲线,横坐标为t1,纵坐标为ft,画出曲线f(t)。
%保持图像,在同位置上继续画图。
%绘制脉冲图,横坐标为t2,纵坐标为fn,画出脉冲f(n)。
>>stem(t2,fn);
>>gridon;%在坐标轴内添加网格。
%坐标轴范围:
x轴为-4~4,y轴为-0.1~0.5。
%标明x轴为Time(时间),单位为sec(秒)。
%标明y轴为F(n)(离散信号)。
>>axis([-4,4,-0.1,0.5]);>>xlabel('Time(sec)');>>ylabel('f(n)');
>>title('抽样后Sa脉冲序列');%标题写“抽样后Sa脉冲序列”。
>>%计算Sa脉冲序列的频谱
>>Fsw=Ts*fn*exp(-j*t2'*w);%频谱>>subplot(2,2,4);
fs(ω)=Ts⋅f(n)⋅e-j⋅t2⋅ω。
%在图像窗口内分成四份,在第四份中放入曲线。
%绘制曲线,横坐标为w,纵坐标为|Fsw|,画出曲线|Fs(w)|。
%在坐标轴内添加网格。
>>plot(w,abs(Fsw));>>gridon;
>>axis([-10,10,-0.2,0.5]);%坐标轴范围:
x轴为-4~4,y轴为-0.1~0.5。
>>xlabel('w');
%标明x轴为w(角速度)。
%表明y轴为Fs(w)(抽样信号)。
%标题写“Sa脉冲序列的频谱”。
>>ylabel('Fs(w)');
>>title('Sa脉冲序列的频谱');
>>wm=2;
%升余弦脉冲信号的带宽ωm。
%理想低通滤波器的截止频率ωc。
%时域计算点数,在-100~100之间生成201个点。
>>wc=1.2*wm;>>n=-100:
100;
>>nTs=n*Ts;
%时域抽样点nTs=时域计算点×抽样间隔。
>>fs=(sin(nTs)/nTs).*(uct(nTs+pi)-uct(nTs-pi));
%该Sa脉冲信号为f(s)=
%抽样信号。
sin(n*Ts)
,-π≤t1≤+π。
n*Ts
>>Ft=fs*Ts*wc/pi*sinc((wc/pi)*(ones(length(nTs),1)*t1-nTs'*ones(1,length(t1))));
%信号重建。
>>figure,subplot(3,1,1),plot(t1,ft),holdon,stem(nTs,fs),gridon;
%打开新的图形窗口,将图像窗口分为三份。
%在第一个小窗口内绘制Sa信号曲线,%再加上阶跃信号及抽样点。
%将横坐标限制在-4~4之间,纵坐标限制在-0.1~0.1之间。
>>axis([-4,4,-0.1,0.1]);
>>xlabel('nTs'),ylabel('f(nTs)');%横坐标标上nTs,纵坐标标上f(nTs)。
>>title('f(nTs),Ts=1');
%标题写明为当Ts=1时的f(nTs)。
%在第二个小窗口内绘制抽样后恢复得到信号F(t)。
>>subplot(3,1,2),plot(t1,Ft),gridon;>>axis([-4,4,-0.1,0.1]);>>xlabel('t'),ylabel('f(t)')
%将横坐标限制在-4~4之间,纵坐标限制在-0.1~0.1之间。
%横坐标标上t,纵坐标标上f(t)。
>>title('从f(nTs)重构为f(t)');%标题写明为从f(nTs)重构为f(t)。
>>er=abs(Ft-ft);
%求出抽样前后的误差,即抽样后的值减抽样前再取绝对值。
%在第三个小窗口内绘制误差曲线er(t)。
%横坐标标为t,纵坐标标为error(t),表示误差量。
>>subplot(3,1,3),plot(t1,er),gridon;>>xlabel('t'),ylabel('error(t)');