实验二 时域采样与频域采样
一 实验目的
1 掌握时域连续信号经理想采样前后的频谱变化,加深对时域采样定理的理解 2 理解频率域采样定理,掌握频率域采样点数的选取原则 二 实验原理 1 时域采样定理
?(j?)对模拟信号xa(t)以T进行时域等间隔采样,形成的采样信号的频谱Xa会以采样角频率?s(?s?2?)为周期进行周期延拓,公式为: T1????a(t)]??Xa(j??jn?s) Xa(j?)?FT[xTn???利用计算机计算上式并不容易,下面导出另外一个公式。
?a(t)和模拟信号xa(t)之间的关系为: 理想采样信号x?a(t)?xa(t)??(t?nT) xn?????对上式进行傅里叶变换,得到:
?(j?)?Xa?[xa(t)??(t?nT)e??n????????j?tdt?n???????????xa(t)?(t?nT)e?j?tdt
在上式的积分号内只有当t?nT时,才有非零值,因此:
?(j?)?Xan????x(nT)ea???jn?T
上式中,在数值上xa(nT)?x(n),再将???T代入,得到:
?(j?)?Xan????x(n)ea???jn????T?X(ej?)???T
上式说明采样信号的傅里叶变换可用相应序列的傅里叶变换得到,只要将自变量
?用?T代替即可。 2 频域采样定理
对信号x(n)的频谱函数X(ej?)在[0,2?]上等间隔采样N点,得到
X(k)?X(ej?)??2?kN k?0,1,2,L,N?1
??则有: xN(n)?IDFT[X(k)]N?[i????x(n?iN)]RN(n)
即N点IDFT[X(k)]得到的序列就是原序列x(n)以N为周期进行周期延拓后的主值序列, 因此,频率域采样要使时域不发生混叠,则频域采样点数N必须大于等于时域离散信号的长度M(即N?M)。在满足频率域采样定理的条件下,xN(n)就是原序列x(n)。如果
N?M,则xN(n)比原序列x(n)尾部多N?M个零点,反之,时域发生混叠,xN(n)与
x(n)不等。
对比时域采样定理与频域采样定理,可以得到这样的结论:两个定理具有对偶性,即“时域采样,频谱周期延拓;频域采样,时域信号周期延拓”。在数字信号处理中,都必须服从这二个定理。
三 实验内容 1 时域采样定理的验证
给定模拟信号xa(t)?Ae??tsin(?0t)u(t),式中,A=444.128,??502?,
?0?502?rad/s,其幅频特性曲线如下图示:
xa(t)的幅频特性曲线10.8|x(jf)|a0.60.40.20050100150200250f/Hz300350400450500
选取三种采样频率,即Fs?1kHz,300Hz,200Hz,对xa(t)进行理想采样,得到采
样序列:x(n)?xa(nT)?Ae??nTsin(?0nT)u(nT)。观测时间长度为Tp?64ms。分
别绘出三种采样频率得到的序列的幅频特性曲线图,并进行比较。 2 频域采样定理的验证
?n?1?给定信号:x(n)??27?n?0?0?n?1314?n?26,对x(n)的频谱函数X(ej?)在 others[0,2?]上分别等间隔采样16点和32点,得到X16(k)和X32(k),再分别对X16(k)和X32(k)进行IDFT,得到x16(n)和x32(n)。分别画出X(ej?)、X16(k)和X32(k)的幅度谱,并绘图显示x(n)、x16(n)和x32(n)的波形,进行对比和分析。 四 思考题
如果序列x(n)的长度为M,希望得到其频谱X(e)在[0,2?]上N点等间隔
j?采样,当N?M时,如何用一次最少点数的DFT得到该频谱采样? 五 实验报告及要求
1 编写程序,实现上述要求,打印要求显示的图形 2 分析比较实验结果,简述由实验得到的主要结论 3 简要回答思考题 4 附上程序清单和有关曲线
%时域采样
Tp=128/1000;%观测时间128ms Fs=1000; T=1/Fs; %采样频率1KHz M=Tp*Fs;%取样点数128点 n=0:M-1;t=n*T;
A=444.128;alph=pi*50*2^0.5;omega=pi*50*2^0.5; xnt=A*exp(-alph*t).*sin(omega*t);
Xk=T*fft(xnt,M); %M=128点FFT[xnt]
subplot(4,2,1); plot(n,xnt); xlabel('t');ylabel('xa(t)'); title('原信号波形'); k=0:M-1; wk=k/(Tp*Fs); %归一化处理
subplot(4,2,2);plot(wk,abs(Xk));title('T*FT[xa(nT)],Fs=1KHz幅频特性'); xlabel('w/\\pi');ylabel('幅度(H1(jf))'); Tp=64/1000;%观测时间64ms Fs=1000; T=1/Fs; %采样频率1KHz M=Tp*Fs;%取样点数64点 n=0:M-1;t=n*T;
A=444.128;alph=pi*50*2^0.5;omega=pi*50*2^0.5; xnt=A*exp(-alph*t).*sin(omega*t);
Xk=T*fft(xnt,M); %M=64点FFT[xnt]
subplot(4,2,3); stem(n,xnt,'.'); xlabel('n');ylabel('xa(nT)'); title('Fs=1KHz采样序列');
k=0:M-1; wk=k/(Tp*Fs);
subplot(4,2,4);plot(wk,abs(Xk));title('T*FT[xa(nT)],Fs=1KHz幅频特性'); xlabel('w/\\pi');ylabel('幅度(H1(jf))');
Fs=300;T=1/Fs; M=Tp*Fs;n=0:M-1;t=n*T;
A=444.128;alph=pi*50*2^0.5;omega=pi*50*2^0.5; xnt=A*exp(-alph*t).*sin(omega*t); Xk=T*fft(xnt,M);
subplot(4,2,5); stem(n,xnt,'.'); xlabel('n');ylabel('x2(n)'); title('Fs=300Hz采样序列');
k=0:M-1; wk=k/(Tp*Fs);
subplot(4,2,6);plot(wk,abs(Xk));title('T*FT[xa(nT)],Fs=300Hz幅频特性'); xlabel('w/\\pi');ylabel('(H2(jf))');
Fs=200;T=1/Fs; M=Tp*Fs;n=0:M-1;t=n*T;
A=444.128;alph=pi*50*2^0.5;omega=pi*50*2^0.5; xnt=A*exp(-alph*t).*sin(omega*t); Xk=T*fft(xnt,M);
subplot(4,2,7); stem(n,xnt,'.'); xlabel('n');ylabel('x3(n)'); title('Fs=200Hz采样序列');
k=0:M-1; wk=k/(Tp*Fs);
subplot(4,2,8);plot(wk,abs(Xk));title('T*FT[xa(nT)],Fs=200Hz幅频特性'); xlabel('w/\\pi');ylabel('(H3(jf))');
%频域采样
M=27;N=32;n=0:M;
xn=(n>=0&n<=13).*(n+1)+(n>=14&n<=26).*(27-n); %产生x(n)
Xk=fft(xn,1024); 24点FFT[x(n)] X32k=fft(xn,32); 2点FFT[x(n)]
x32n=ifft(X32k); 2点IFFT[X32(k)]得到x32(n)
X16k=X32k(1:2:N); %隔点抽取X32(k)得到X16(k) x16n=ifft(X16k,N/2); 点IFFT[X16(k)]得到x16(n) k=0:1023;
wk=2*k/1024; %连续频谱图的横坐标取值 subplot(3,2,1); plot(wk,abs(Xk)); title('FT[x(n)]');
xlabel('\\omega/\\pi');ylabel('|X(e^j^\\omega)|');axis([0,1,0,200]); subplot(3,2,2); stem(n,xn,'.'); title('三角波序列x(n)'); xlabel('n');ylabel('x(n)');axis([0,32,0,20])
k=0:N/2-1; %离散频谱图的横坐标取值 subplot(3,2,3);stem(k,abs(X16k),'.');title('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,'.');title('16IDFT[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),'.');title('32点频域采样'); xlabel('k');ylabel('|X_3_2(k)|');axis([0,16,0,200]) n1=0:N-1;
subplot(3,2,6);stem(n1,x32n,'.');title('32IDFT[X_3_2(k)]'); xlabel('n');ylabel('x_3_2(n)');axis([0,32,0,20])