实验5抽样定理Word文件下载.docx
《实验5抽样定理Word文件下载.docx》由会员分享,可在线阅读,更多相关《实验5抽样定理Word文件下载.docx(23页珍藏版)》请在冰豆网上搜索。
![实验5抽样定理Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-11/15/434ff46c-0bc8-4505-910e-9392515debec/434ff46c-0bc8-4505-910e-9392515debec1.gif)
2;
f=sin(2*pi*f0*t)+1/3*sin(6*pi*f0*t);
subplot(4,1,1);
plot(t,f);
axis([min(t),max(t),1.1*min(f),1.1*max(f)]);
title('
原连续信号和抽样信号'
);
fori=1:
3;
fs=i*fm;
Ts=1/fs;
n=-2:
Ts:
f=sin(2*pi*f0*n)+1/3*sin(6*pi*f0*n);
subplot(4,1,i+1);
stem(n,f,'
filled'
axis([min(n),max(n),1.1*min(f),1.1*max(f)]);
end
程序运行结果如图5-1所示。
图5-1
(2)连续信号和抽样信号的频谱
由理论分析可知,信号的频谱图可以很直观地反映出抽样信号能否恢复原模拟信号。
因此,我们对上述三种情况下的时域信号求幅度谱,来进一步分析和验证时域抽样定理。
例5-2编程求解例5-1中连续信号及其三种抽样频率(Fs>
2fm)下的抽样信号的幅度谱。
N=length(t);
wm=2*pi*fm;
k=0:
N-1;
w1=k*wm/N;
F1=f*exp(-j*t'
*w1)*dt;
plot(w1/(2*pi),abs(F1));
axis([0,max(4*fm),1.1*min(abs(F1)),1.1*max(abs(F1))]);
ifi<
=2c=0;
elsec=1;
fs=(i+c)*fm;
N=length(n);
wm=2*pi*fs;
k=0:
w=k*wm/N;
F=f*exp(-j*n'
*w)*Ts;
plot(w/(2*pi),abs(F));
axis([0,max(4*fm),1.1*min(abs(F)),1.1*max(abs(F))]);
程序运行结果如图5-2所示。
由图可见,当满足Fs≥2fm条件时,抽样信号的频谱没有混叠现象;
当不满足Fs≥2fm条件时,抽样信号的频谱发生了混叠,即图5-2的第二行Fs<2fm的频谱图,,在fm=5f0的范围内,频谱出现了镜像对称的部分。
图5-2
(3)由内插公式重建信号
信号重建一般采用两种方法:
一是用时域信号与理想滤波器系统的单位冲激响应进行卷积积分;
二是用低通滤波器对信号进行滤波。
本实验只讨论第一种方法。
由理论分析可知,理想低通滤波器的单位冲激响应为
抽样信号
通过滤波器输出,其结果应为
与h(t)的卷积积分:
该式称为内插公式。
由式可见,xa(t)信号可以由其抽样值xa(nT)及内插函数重构。
MATLAB中提供了sinc函数,可以很方便地使用内插公式。
例5-3用上面推导出的内插公式重建例5-1给定的信号。
dt=0.01;
t=0:
3*T0;
x=sin(2*pi*f0*t)+1/3*sin(6*pi*f0*t);
plot(t,x);
axis([min(t),max(t),1.1*min(x),1.1*max(x)]);
用时域卷积重建抽样信号'
n=0:
(3*T0)/Ts;
t1=0:
x1=sin(2*pi*f0*n/fs)+1/3*sin(6*pi*f0*n/fs);
T_N=ones(length(n),1)*t1-n'
*Ts*ones(1,length(t1));
xa=x1*sinc(fs*pi*T_N);
plot(t1,xa);
axis([min(t1),max(t1),1.1*min(xa),1.1*max(xa)]);
程序运行结果如图5-3所示:
图5-3
2、频域抽样与信号恢复
(1)频域抽样定理
从理论学习可知,在单位圆上对任意序列的Z变换等间隔采样N点得到:
k=0,1,…,N-1
该式实现了序列在频域的抽样。
那么由频域的抽样得到的频谱的序列能否不失真地恢复原时域信号呢?
由理论学习又知,频域抽样定理由下列公式表述:
表明对一个频谱采样后经IDFT生成的周期序列
是原非周期序列x(n)的周期延拓序列,其时域周期等于频域抽样点数N。
假定有限长序列x(n)的长度为M,频域抽样点数为N,原时域信号不失真地由频域抽样恢复的条件如下:
①如果x(n)不是有限长序列,则必然造成混叠现象,产生误差;
②如果x(n)是有限长序列,且频域抽样点数N小于序列长度M(即N<
M),则x(n)以N为周期进行延拓也将造成混叠,从
中不能无失真地恢复出原信号x(n)。
③如果x(n)是有限长序列,且频域抽样点数N大于或等于序列长度M(即N≥M),则从
中能无失真地恢复出原信号x(n),即
(2)从频谱抽样恢复离散时间序列
例5-4已知一个时间序列的频谱为
用IFFT计算并求出其时间序列x(n),并绘图显示时间序列。
分析:
该题使用了数字频率,没有给出采样周期,则默认Ts=1S,另外,从
的解析式可以直接看出时域序列xn=[3,2,1,2,3]。
但为说明问题,仍编写程序求解如下:
Ts=1;
N0=[3,5,10];
forr=1:
N=N0(r);
D=2*pi/(Ts*N);
kn=floor(-(N-1)/2:
-1/2);
kp=floor(0:
(N-1)/2);
w=[kp,kn]*D;
X=3+2*exp(-j*w)+1*exp(-j*2*w)+2*exp(-j*3*w)+3*exp(-j*4*w);
x=ifft(X,N)
subplot(1,3,r);
stem(n*Ts,abs(x));
box
程序运行结果如图5-4所示:
图5-4
注意:
程序中数字频率的排序进行了处理,这是因为
的排列顺序是从0开始,而不是从-(N-1)/2开始。
程序运行后将显示数据:
x=5.00005.00001.0000
x=3.00002.00001.00002.00003.0000
x=3.0000-0.0000i2.0000+0.0000i1.0000-0.0000i2.0000+0.0000i3.0000-0.0000-0.0000+0.0000i0-0.0000i-0.0000+0.0000i0.0000-0.0000i-0.0000+0.0000i
由
的频谱表达式可知,有限长时间序列x(n)的长度M=5,现分别取频域抽样点数为N=3,5,10,由图5-4显示的结果可以验证:
①当N=5和N=10时,N≥M,能够不失真地恢复出原信号x(n);
②当N=3时,N<M,时间序列有泄漏,形成了混叠,不能无失真地恢复出原信号x(n)。
混叠的原因是上一周期的后2点与本周期的前两点发生重叠,如下所示:
32123
例5-5已知一个频率范围在[-62.8,62.8]rad/s间的频谱
,用IFFT计算并求出时间序列x(n),用图形显示时间序列。
分析:
本题给出了模拟频率Ω,其中Ωm=62.8,需将其归一化为数字频率。
根据奈奎斯特定理可知,(1/Ts)=Fs≥(2Ωm/2П),可以推导出Ts≤(П/Ωm),取Ts=0.05s,即采样频率Fs为20Hz或40П。
wm=62.8;
Ts=pi/wm;
N0=[8,20];
2
k=[0:
N-1]+eps;
omg=k*D;
X=sin(0.275*omg)./sin(0.025*omg);
x=abs(ifft(X,N));
subplot(1,2,r);
程序运行结果如图5-5所示:
图5-5
由N=20的结果可知,时间序列x(n)是一个矩形窗。
根据DFT的循环移位性质可知,非零数据存在于n=-5:
5的区域,有限长序列的长度为11。
而N=8小于有限长序列的长度,其结果发生了混叠,不能无失真地恢复出原信号x(n)。
3、从频谱恢复连续时间信号
实际应用中,离散信号往往来源于对连续信号的采样,因此,这里要讨论从频谱如何计算连续时间信号。
从本质上讲,计算机处理的都是离散信号。
当使用计算机处理连续信号时,实际上是用采样周期极小的序列信号来近似为连续信号。
因此在处理时,原来对于离散序列处理的理论依然有效。
(1)选择一个符合奈奎斯特定理的很小的采样周期T,将主要的模拟频谱限制在奈奎斯特频率范围内,
;
(2)在[
]的频率区间取N个频率点Ωk,求出对应的数字频谱:
(3)对
坐IDFT,求xa(t)。
假定没有发生时间混叠,则
(4)作图。
用plot自动进行插值,获得连续信号。
例5-6已知图5-6所示的理想低通滤波器的模拟频率Ωc=3,在|Ω|≤Ωc范围内幅度为1,|Ω|>Ωc时幅度为0。
要求计算连续脉冲响应xa(t)。
图5-6
由奈奎斯特定理可知采样频率Ωs≥2Ωc,即采样周期Ts≤П/Ωc恢复原信号时不会发生混叠。
选的再小一些可以增加样点数,因此可以选Ts=0.1П/Ωc=0.1047s。
同时,为使时间信号尽量接近连续信号,需提高N点的个数。
可以由模拟频率的分辨率公式推导:
D=2П/NTs≤0.1Ωc,使频率分辨率小于有效带宽的1/10,得到:
N≥20П/ΩcTs
程序清单如下:
wc=3;
Tmax=0.1*pi/wc;
Ts=input('
(Ts<
Tmax)Ts='
Nmin=20*pi/wc/Ts;
N=input('
(N>
Nmin)N='
D=2*pi/(Ts*N);
M=floor(wc/D);
Xa=[ones(1,M+1),zeros(1,N-2*M-1),ones(1,M)];
n=-(N-1)/2:
(N-1)/2;
xa=abs(fftshift(ifft(Xa/Ts)