实验一 时域采样与频域采样定理的验证实验
1. 实验目的
(1) 时域采样理论与频域采样理论是数字信号处理中的重要理论。要求掌握模拟信号采样前后频谱的变化,以及如何选择采样频率才能使采样后的信号不丢失信息;
(2) 要求掌握频率域采样会引起时域周期化的概念,以及频率域采样定理及其对频域采样点数选择的指导作用。
2. 实验原理与方法
时域采样定理的要点是:
? (j X ① 对模拟信号xa(t)以T进行时域等间隔理想采样,形成的采样信号的频谱 a?)会
以采样角频率Ωs(Ωs=2π/T)为周期进行周期延拓。公式为
1???a(t)]??Xa(j??jk?s) Xa(j?)?FT[xTk??? ② 采样频率Ωs必须大于等于模拟信号最高频率的两倍以上,才能使采样信号的频谱不产生频谱混叠。
利用计算机计算上式并不方便,下面我们导出另外一个公式,以便在计算机上进行实验。 理想采样信号 x 和模拟信号xa(t)之间的关系为: ? a(t)
??a(t)?xa(t)??(t?nT)xn???? 对上式进行傅里叶变换,得到:
?(j?)??[x(t)??(t?nT)]e?j?tdtXa?a???n??? =?n???????xa(t)?(t?nT)e?j?tdt上式中,在数值上xa(nT)=x(n),再将ω=ΩT代入,得到:
?(j?)?Xan????x(nT)ea??j?nT上式的右边就是序列的傅里叶变换,即
?(j?)?X(ej?)Xa???T上式说明采样信号的傅里叶变换可用相应序列的傅里叶变换得到,只要将自变量ω用ΩT代替即可。
频域采样定理的要点是:
① 对信号x(n)的频谱函数在[0,2π]上等间隔采样N点,得到:
XN(k)?X(ej?)??2πkN , k?0,1,2,L,N?1则N点IDFT[XN(k)]得到的序列就是原序列x(n)以N为周期进行周期延拓后的主值区序列,公式为
xN(n)?IDFT[XN(k)]N?[?x(n?iN)]RN(n)i???? ② 由上式可知,频域采样点数N必须大于等于时域离散信号的长度M(即N≥M),才能使时域不产生混叠,则N点IDFT[XN(k)]得到的序列xN(n)就是原序列x(n), 即xN(n)=x(n)。如果N>M,xN(n)比原序列尾部多N-M个零点;如果N 3. 实验内容及步骤 (1) 时域采样理论的验证。 给定模拟信号 xa(t)?Ae??tsin(?0t)u(t)式中, A=444.128, π, ? ,它的幅频特性曲线如图1.1所示。? ? 50 20?502πrad/s 图1.1 xa(t)的幅频特性曲线 现用DFT(FFT)求该模拟信号的幅频特性,以验证时域采样理论。 按照xa(t)的幅频特性曲线,选取三种采样频率,即Fs=1 kHz,300 Hz,200 Hz。观测时间选Tp=64 ms。 为使用DFT,首先用下面的公式产生时域离散信号,对三种采样频率,采样序列按顺序用x1(n)、x2(n)、x3(n)表示。 x(n)?xa(nT)?Ae??nTsin(?0nT)u(nT) 因为采样频率不同,得到的x1(n)、x2(n)、x3(n)的长度不同,长度(点数)用公式N=T p×Fs计算。选FFT的变换点数为M=64,序列长度不够64的尾部加零。 X(k)=FFT[x(n)] , k=0,1,2,3,…,M-1 式中, k代表的频率为 ?k?2πkM 要求:编写实验程序,计算x1(n)、 x2(n)和x3(n)的幅度特性,并绘图显示。观察分析频谱混叠失真。 (2) 频域采样理论的验证。 给定信号如下: ?n?10?n?13?x(n)??27?n14?n?26?0其它?jω 编写程序分别对频谱函数X(e)=FT[x(n)]在区间[0, 2π]上等间隔采样32点和16点,得到X32(k)和X16(k): X32(k)?X(ej?)X16(k)?X(ej?)??2πk32 , k?0,1,2,L31??2πk16 , k?0,1,2,L15再分别对X32(k)和X16(k)进行32点和16点IFFT,得到x32(n)和x16(n): x32(n)?IFFT[X32(k)]32 , n?0,1,2,L,31x16(n)?IFFT[X16(k)]16 , n?0,1,2,L,15分别画出、X32(k)和X16(k)的幅度谱,并绘图显示x(n)、x32(n)和x16(n)的波形,进行对比和分析,验证总结频域采样理论。 时域: A=444.128;a=64*sqrt(2)*pi;w0=64*sqrt(2)*pi; Tp=64/1000;F1=1000;F2=300;F3=200; T1=1/F1;T2=1/F2;T3=1/F3; n1=0:Tp*F1-1;n2=0:Tp*F2-1;n3=0:Tp*F3-1; x1=A*exp(-a*n1*T1).*sin(w0*n1*T1); x2=A*exp(-a*n2*T2).*sin(w0*n2*T2); x3=A*exp(-a*n3*T3).*sin(w0*n3*T3); f1=fft(x1,length(n1)); f2=fft(x2,length(n2)); f3=fft(x3,length(n3)); k1=0:length(f1)-1; fk1=k1/Tp; k2=0:length(f2)-1; fk2=k2/Tp; k3=0:length(f3)-1; fk3=k3/Tp; subplot(3,2,1) stem(n1,x1,'.') title('(a)Fs=1000HZ'); xlabel('n');ylabel('x1(n)'); subplot(3,2,3) stem(n2,x2,'.') title('(b)Fs=300HZ'); xlabel('n');ylabel('x2(n)'); subplot(3,2,5) stem(n3,x3,'.') title('(c)Fs=200HZ'); xlabel('n');ylabel('x3(n)'); subplot(3,2,2) >> plot(fk1,abs(f1)); >> title('(a) FT[xa(nT)],Fs=1000Hz') >> xlabel('f(Hz)'); >> ylabel('幅度'); >> subplot(3,2,4); >> plot(fk2,abs(f2)); >> title('(a) FT[xa(nT)],Fs=300Hz'); >> xlabel('f(Hz)'); ylabel('幅度') >> plot(fk3,abs(f3)); >> title('(a) FT[xa(nT)],Fs=200Hz') >> xlabel('f(Hz)'); ylabel('幅度') 频域: M=27;N=32;n=0:M; xa=0:floor(M/2);xb=ceil(M/2)-1:-1:0;xn=[xa,xb]; Xk=fft(xn,1024); X32k=fft(xn,32); X32n=ifft(X32k); X16k=X32k(1:2:N); X16n=ifft(X16k,N/2); subplot(3,2,2); stem(n,xn,'.'); box on title('(b)三角形序列x(n)'); xlabel('n'); ylabel('x(n)');