数字信号处理第二次试验:时域采样与频域采样
前言
为了帮助同学们完成痛苦的实验课程设计,本作者将其作出的实验结果及代码贴至CSDN中,供同学们学习参考。如有不足或描述不完善之处,敬请各位指出,欢迎各位的斧正!
一、实验目的
时域采样理论与频域采样理论是数字信号处理中的重要理论。要求掌握模拟信号采样前后频谱的变化,以及如何选择采样频率才能使采样后的信号不丢失信息;要求掌握频率域采样会引起时域周期化的概念,以及频率域采样定理及其对频域采样点数选择的指导作用。
二、实验原理与方法
时域采样定理的要点是:
a)对模拟信号
x
a
(
t
)
x_a(t)
xa(t)以间隔T进行时域等间隔理想采样,形成的采样信号的频谱
X
^
(
j
Ω
)
\widehat{X}(j\Omega)
X
(jΩ)是原模拟信号频谱
X
a
(
j
Ω
)
X_a(j\Omega)
Xa(jΩ)以采样角频率
Ω
s
(
Ω
s
=
2
π
/
T
)
\Omega_s(\Omega_s=2\pi/T)
Ωs(Ωs=2π/T)为周期进行周期延拓。公式为:
b) 采样频率
Ω
s
\Omega_s
Ωs必须大于等于模拟信号最高频率的两倍以上,才能使采样信号的频谱不产生频谱混叠。
利用计算机计算上式并不方便,下面我们导出另外一个公式,以便用计算机上进行实验。
理想采样信号
x
^
a
(
t
)
\widehat{x}_a(t)
x
a(t)和模拟信号
x
a
(
t
)
x_a(t)
xa(t)之间的关系为:
对上式进行傅立叶变换,得到:
在上式的积分号内只有当t=nT时,才有非零值,因此:
上式中,在数值上
x
a
(
n
T
)
=
x
(
n
)
x_a(nT)=x(n)
xa(nT)=x(n),再将
ω
=
T
Ω
\omega=T\Omega
ω=TΩ代入,得到:
上式的右边就是序列的傅立叶变换
X
(
e
j
w
)
X(e^{jw})
X(ejw),即
上式说明理想采样信号的傅立叶变换可用相应的采样序列的傅立叶变换得到,只要将自变量
ω
\omega
ω用
T
Ω
T\Omega
TΩ代替即可。
频域采样定理的要点是:
a) 对信号x(n)的频谱函数
X
(
e
j
w
)
X(e^{jw})
X(ejw)在[0,2π]上等间隔采样N点,得到
则N点IDFT[
X
N
(
k
)
X_N(k)
XN(k)]得到的序列就是原序列x(n)以N为周期进行周期延拓后的主值区序列,公式为:
b) 由上式可知,频域采样点数N必须大于等于时域离散信号的长度M(即N≥M),才能使时域不产生混叠,则 N 点
I
D
F
T
[
X
N
(
k
)
]
IDFT[X_N(k)]
IDFT[XN(k)]得到的序列
x
N
(
n
)
x_N(n)
xN(n)就是原序列x(n),即
x
N
(
n
)
x_N(n)
xN(n)=x(n)。如果 N>M,
x
N
(
n
)
x_N(n)
xN(n)比原序列尾部多N-M个零点;如果 N<M,则
x
N
(
n
)
=
I
D
F
T
[
X
N
(
k
)
]
x_N(n)=IDFT[X_N(k)]
xN(n)=IDFT[XN(k)]发生了时域混叠失真,而且
x
N
(
n
)
x_N(n)
xN(n)的长度N也比x(n)的长度M短。因此,
x
N
(
n
)
x_N(n)
xN(n)与 x(n)不相同。
在数字信号处理的应用中,只要涉及时域或者频域采样,都必须服从这两个采样理论的要点。
对比上面叙述的时域采样原理和频域采样原理,得到一个有用的结论,这两个采样理论具有对偶性:“时域采样频谱周期延拓,频域采样时域信号周期延拓”。因此放在一起进行实验。
三、实验环境
Matlab 7.0及Matlab 2018b
四、实验内容及步骤
(1)时域采样理论的验证。
给定模拟信号,
x
a
(
t
)
=
A
e
−
a
t
s
i
n
(
Ω
0
t
)
u
(
t
)
x_a(t)=Ae^{-at}sin(\Omega_0t)u(t)
xa(t)=Ae−atsin(Ω0t)u(t)
式中A=444.128,a=50
2
π
\sqrt{2}\pi
2π,
Ω
0
Ω_0
Ω0 =50
2
\sqrt{2}
2πrad/s,它的幅频特性曲线如图
图
x
a
(
t
)
x_a(t)
xa(t)的幅频特性曲线
现用DFT(FFT)求该模拟信号的幅频特性,以验证时域采样理论。
按照
x
a
(
t
)
x_a(t)
xa(t)的幅频特性曲线,选取三种采样频率,即
F
s
F_s
Fs=1kHz,300Hz,200Hz。观测时间选
T
p
T_p
Tp=50ms。
为使用DFT,首先用下面公式产生时域离散信号,对三种采样频率,采样序列按顺序用
x
1
(
n
)
x_1(n)
x1(n),
x
2
(
n
)
x_2(n)
x2(n),
x
3
(
n
)
x_3(n)
x3(n)表示。
因为采样频率不同,得到的
x
1
(
n
)
x_1(n)
x1(n),
x
2
(
n
)
x_2(n)
x2(n),
x
3
(
n
)
x_3(n)
x3(n)的长度不同,长度(点数)用公式
N
=
T
p
×
F
s
N=T_p\times{F_s}
N=Tp×Fs计算。选FFT 的变换点数为M=64,序列长度不够64的尾部加零。
式中k代表的频率为
ω
k
=
2
π
M
k
\omega_k=\frac{2\pi}{M}k
ωk=M2πk。
要求:编写实验程序,计算
x
1
(
n
)
x_1(n)
x1(n),
x
2
(
n
)
x_2(n)
x2(n),
x
3
(
n
)
x_3(n)
x3(n)的幅度特性,并绘图显示。观察分析频谱混叠失真。
(2)频域采样理论的验证。
给定信号如下:
编写程序分别对频谱函数
X
(
e
j
ω
)
=
F
T
[
x
(
n
)
]
X(e^{j\omega})=FT[x(n)]
X(ejω)=FT[x(n)]在区间[0,2
π
\pi
π]上等间隔采样32和16点,得到
X
32
(
k
)
X_{32}(k)
X32(k)和
X
16
(
k
)
X_{16}(k)
X16(k):
再分别对和进行 32 点和 16 点 IFFT,得到
X
32
(
k
)
X_{32}(k)
X32(k)和
X
16
(
k
)
X_{16}(k)
X16(k):
分别画出
X
(
e
j
w
)
X(e^{jw})
X(ejw)、
X
32
(
k
)
X_{32}(k)
X32(k)和
X
16
(
k
)
X_{16}(k)
X16(k)的幅度谱,并绘图显示
x
(
n
)
x(n)
x(n)、
X
32
(
k
)
X_{32}(k)
X32(k)和
X
16
(
k
)
X_{16}(k)
X16(k)的波形,进行对比和分析,验证总结频域采样理论。
提示:频域采样用以下方法容易变程序实现。
① 直接调用MATLAB函数fft计算
X
32
(
k
)
=
F
F
T
[
x
(
n
)
]
32
X_{32}(k)=FFT[x(n)]_{32}
X32(k)=FFT[x(n)]32就得到
X
(
e
j
ω
)
X(e^{j\omega})
X(ejω)在
[
0
,
2
π
]
[0,2\pi]
[0,2π]的32点频率域采样
② 抽取
X
32
(
k
)
X_{32}(k)
X32(k)的偶数点即可得到
X
(
e
j
w
)
X(e^{jw})
X(ejw)在
[
0
,
2
π
]
[0,2\pi]
[0,2π]的16点频率域采样
X
16
(
k
)
X_{16}(k)
X16(k),即
X
16
(
k
)
=
X
32
(
2
k
)
,
k
=
0
,
1
,
2
,
⋯
,
15
X_{16}(k)=X_{32}(2k),k=0,1,2,\cdots,15
X16(k)=X32(2k),k=0,1,2,⋯,15。
③ 当然也可以按照频域采样理论,先将信号x(n)以16为周期进行周期延拓,取其主值区(16点),再对其进行16点DFT(FFT),得到的就是
X
(
e
j
w
)
X(e^{jw})
X(ejw)在
[
0
,
2
π
]
[0,2\pi]
[0,2π]的16点频率域采样
X
16
(
k
)
X_{16}(k)
X16(k)。
五、实验结果截图(含分析)
实验程序清单
%=========(1)时域采样理论的验证程序清单=========
Tp=64/1000;%观察时间Tp=64微秒
%产生M长采样序列x(n)
%-----Fs=1000;T=1/Fs;-----
Fs=1000;T=1/Fs;
M=Tp*Fs;n=0:M-1;
A=444.128;alph=pi*50*2^0.5;omega=pi*50*2^0.5;
xnt=A*exp(-alph*n*T).*sin(omega*n*T);
Xk=T*fft(xnt,M);%M点FFT[(xnt)]
yn='xa(nT)';subplot(3,2,1);
tstem(xnt,yn);%调用自编绘图函数tstem绘制序列图
box on;title('(a)Fs=1000Hz');
k=0:M-1;fk=k/Tp;
subplot(3,2,2);plot(fk,abs(Xk));title('(a)T*FT[xa(nT)],Fs=1000Hz');
xlabel('f(Hz)');ylabel('幅度');axis([0,Fs,0,1.2*max(abs(Xk))])
%Fs=300Hz和Fs=200Hz的程序与上面Fs=1000Hz完全相同。
%-----Fs=300;T=1/Fs;-----
Fs=300;T=1/Fs;
M=Tp*Fs;n=0:M-1;
A=444.128;alph=pi*50*2^0.5;omega=pi*50*2^0.5;
xnt=A*exp(-alph*n*T).*sin(omega*n*T);
Xk=T*fft(xnt,M);%M点FFT[(xnt)]
yn='xa(nT)';subplot(3,2,3);
tstem(xnt,yn);%调用自编绘图函数tstem绘制序列图
box on;title('(a)Fs=300Hz');
k=0:M-1;fk=k/Tp;
subplot(3,2,4);plot(fk,abs(Xk));title('(a)T*FT[xa(nT)],Fs=300Hz');
xlabel('f(Hz)');ylabel('幅度');axis([0,Fs,0,1.2*max(abs(Xk))])
%-----Fs=200;T=1/Fs;-----
Fs=200;T=1/Fs;
M=Tp*Fs;n=0:M-1;
A=444.128;alph=pi*50*2^0.5;omega=pi*50*2^0.5;
xnt=A*exp(-alph*n*T).*sin(omega*n*T);
Xk=T*fft(xnt,M);%M点FFT[(xnt)]
yn='xa(nT)';subplot(3,2,5);
tstem(xnt,yn);%调用自编绘图函数tstem绘制序列图
box on;title('(a)Fs=200Hz');
k=0:M-1;fk=k/Tp;
subplot(3,2,6);plot(fk,abs(Xk));title('(a)T*FT[xa(nT)],Fs=200Hz');
xlabel('f(Hz)');ylabel('幅度');axis([0,Fs,0,1.2*max(abs(Xk))])
%=========2频域采样理论的验证程序清单=========
M=27;N=32;n=0:M;
%产生M长三角波序列x(n)
xa=0:floor(M/2);xb=ceil(M/2)-1:-1:0;xn=[xa,xb];
Xk=fft(xn,1024);%1024点FFT[x(n)],用于近似序列x(n)的TF
X32k=fft(xn,32);%32点FFT[x(n)]
x32n=ifft(X32k);%32点IFFT[X32(k)]得到x32(n)
X16k=X32k(1:2:N);%隔点抽取X32k得到X16(K)
x16n=ifft(X16k,N/2);%16点IFFT[X16(k)]得到x16(n)
subplot(3,2,2);stem(n,xn,'.');box on
title('(b) 三角波序列x(n)');xlabel('n');ylabel('x(n)');axis([0,32,0,20])
k=0:1023;wk=2*k/1024;%
subplot(3,2,1);plot(wk,abs(Xk));title('(a)FT[x(n)]');
xlabel('\omega/\pi');ylabel('|X(e^ j^ \omega)|');axis([0,1,0,200])
k=0:N/2-1;
subplot(3,2,3);stem(k,abs(X16k),'.');box on
title('(c)16点频域采样');xlabel('k');ylabel('|X_1_6(k)|');axis([0,8,0,200])
n1=0:N/2-1;
subplot(3,2,4);stem(n1,x16n,'.');box on
title('(d)16点IDFT[X_1_6(k)]');xlabel('n');ylabel('x_1_6(n)');axis([0,32,0,20])
k=0:N-1;
subplot(3,2,5);stem(k,abs(X32k),'.');box on
title('(e)32点频域采样');xlabel('k');ylabel('|X_3_2(k)|');axis([0,16,0,200])
n1=0:N-1;
subplot(3,2,6);stem(n1,x32n,'.');box on
title('(f) 32点IDFT[X_3_2(k)]');xlabel('n');ylabel('x_3_2(n)');axis([0,32,0,20])
function tstem(xn,yn)
%时域序列绘图函数
% xn:信号数据序列,yn:绘图信号的纵坐标名称(字符串)
n=0:length(xn)-1;
stem(n,xn,'.');
xlabel('n');ylabel(yn);
axis([0,n(end),min(xn),1.2*max(xn)])
请注意:
1. 建议先执行第一部分,再执行第二部分;
2. 两段代码分别为main.m和tstem.m文件,放在一个工作路径里;
3. 如果main.m报错plot矢量长度不一致,请考虑将报错所在上一行的M-1改为M,或者可以参考m0_70983381同学的评论用ceil括号括起来(笔者尚未验证)
实验程序运行结果及分析讨论
时域采样理论的验证程序如图。由图可见,采样序列的频谱的确是以采样频率为周期对模拟信号频谱的周期延拓。当采样频率为 1000Hz 时频谱混叠很小;当采样频率为 300Hz 时,在折叠频率 150Hz 附近频谱混叠很严重;当采样频率为200Hz 时,在折叠频率 110Hz 附近频谱混叠更很严重。
时域采样理论的验证程序运行结果如图所示。
该图验证了频域采样理论和频域采样定理。对信号x(n)的频谱函数
X
(
e
j
ω
)
X(e^{j\omega})
X(ejω)在
[
0
,
2
π
]
[0,2\pi]
[0,2π]上等间隔采样N=16时,N点
I
D
F
T
[
X
N
(
k
)
]
IDFT[X_N(k)]
IDFT[XN(k)]得到的序列正是原序列 x(n)以16为周期进行周期延拓后的主值区序列:
由于 N<M,所以发生了时域混叠失真,因此。
x
N
(
n
)
x_N(n)
xN(n)与x(n)不相同,如图所示。当N=32时,如图所示,由于 N>M,频域采样定理,所以不存在时域混叠失真。因此,
x
N
(
n
)
x_N(n)
xN(n)与x(n)相同。
六、思考题
如果序列x(n)的长度为M,希望得到其频谱
X
(
e
j
ω
)
X(e^{j\omega})
X(ejω)在[0,2
π
\pi
π]上的 N 点等间隔采样,当N<M时,如何用一次最少点数的DFT得到该频谱采样?
先对原序列 x(n)以 N 为周期进行周期延拓后取主值区序列,
再计算 N 点 DFT 则得到 N 点频域采样:
想说点啥
这篇文章的公式真多,LaTeX打的手都快断了
欢迎各位同学对我的实验报告进行批评指正
也欢迎同学们的监督催促和投稿支持 之前有一些实验报告我都删了(大亏)
毕竟大学四年少不了互帮互助不是吗(OwO)
点赞收藏关注都是虚的 我只希望各位学有所成
不补考不挂科不重修 顺利拿到双证
欲说还休 欲说还休 那就祝各位健康快乐吧
K.V.S