实验二:时域采样与频域分析一、实验原理与方法1、时域采样定理:(a)对模拟信号)(txa以间隔T进行时域等间隔理想采样,形成的采样信号的频谱)(jX是原模拟信号频谱)(jXa以采样角频率)2(Tss为周期进行周期延拓。公式为:nsaaajnjXTtxFTjX)(1)()((b)采样频率s必须大于等于模拟信号最高频率的两倍以上,才能使采样信号的频谱不产生频谱混叠。2、频域采样定理:公式为:)()()()(nRiNnxkXIDFTnxNiNNN。由公式可知,频域采样点数N必须大于等于时域离散信号的长度M(即N≥M),才能使时域不产生混叠,则N点)(kXIDFTN得到的序列()Nxn就是原序列)(nx,即)()(nxnxN。二、实验内容1、时域采样理论的验证。给定模拟信号)()sin()(0tutAetxta式中A=444.128,=502π,0=502πrad/s,它的幅频特性曲线如图2.1图2.1)(txa的幅频特性曲线现用DFT(FFT)求该模拟信号的幅频特性,以验证时域采样理论。按照)(txa的幅频特性曲线,选取三种采样频率,即sF=1kHz,300Hz,200Hz。观测时间选msTp50。为使用DFT,首先用下面公式产生时域离散信号,对三种采样频率,采样序列按顺序用)(1nx,)(2nx,)(3nx表示。)()sin()()(0nTunTAenTxnxnTa因为采样频率不同,得到的)(1nx,)(2nx,)(3nx的长度不同,长度(点数)用公式spFTN计算。选FFT的变换点数为M=64,序列长度不够64的尾部加零。)()(nxFFTkX1,,3,2,1,0Mk式中k代表的频率为kMk2。要求:编写实验程序,计算)(1nx、)(2nx和)(3nx的幅度特性,并绘图显示。观察分析频谱混叠失真。程序见附录2.1、实验结果见图2.2。2、频域采样理论的验证。给定信号如下:其它02614271301)(nnnnnx编写程序分别对频谱函数()FT[()]jXexn在区间2,0上等间隔采样32和16点,得到)()(1632kXkX和32232()(),0,1,2,31jkXkXek16216()(),0,1,2,15jkXkXek再分别对)()(1632kXkX和进行32点和16点IFFT,得到)()(1632nxnx和323232()IFFT[()],0,1,2,,31xnXkn161616()IFFT[()],0,1,2,,15xnXkn分别画出()jXe、)()(1632kXkX和的幅度谱,并绘图显示x(n)、)()(1632nxnx和的波形,进行对比和分析,验证总结频域采样理论。程序见附录2.2、实验结果见图2.3提示:频域采样用以下方法容易编程实现。(1)直接调用MATLAB函数fft计算3232()FFT[()]Xkxn就得到()jXe在]2,0[的32点频率域采样。(2)抽取32()Xk的偶数点即可得到()jXe在]2,0[的16点频率域采样16()Xk,即1632()(2),0,1,2,,15XkXkk。(3)当然,也可以按照频域采样理论,先将信号x(n)以16为周期进行周期延拓,取其主值区(16点),再对其进行16点DFT(FFT),得到的就是()jXe在]2,0[的16点频率域采样16()Xk。三、实验结果和分析、讨论及结论1、实验结果:图2.2采样频率幅度特性曲线实验分析、讨论及结论:(1)通过图可以发现,时域采样,频域周期延拓,延拓周期为Fs。当采样频率为1000Hz时,频谱混叠很小:当采样频率为300Hz时,频谱混叠很严重;当采样频率为200Hz时,频谱混叠更加严重。所以要满足Fs2Fc。(2)fft函数的调用格式:Xk=fft(xn,N)调用参数xn为被交换的时域序列向量,N是DFT变换的区间长度,当N大于xn的长度时,fft函数自动在xn后面补零。当N小于xn的长度时,fft函数计算xn的前面N个元素构成的N长序列的N点DFT,忽略xn后面的元素。2、实验结果:图2.3频谱函数采样及波形实验分析、讨论及结论:(1)此结果验证了频域采样理论和频域采样定理。对信号)(nx的频谱函数)(jeX在2,0上等间隔采样16N时,N点)(kxIDFTN得到的序列正是原序列)(nx以16为周期进行周期延拓后的主值区序列。即频域采样定理证明,对)(nxN点频域采样反映到时域内就是就是)(nx进行以N为周期延拓序列的主值区间。当N=16时,由于NM,所以发生了时域混叠失真;当N=32时,由于NM,频域采样定理,所以不存在时域混叠失真。上述条件说明,如果采样点数过少,那么进行IDFT所得到的信号就会混叠失真,采样条件满足采样点数大于原序列点数,即NM。(2)Ifft函数用法同fft函数。四、思考题1、如果序列x(n)的长度为M,希望得到其频谱()jXe在]2,0[上的N点等间隔采样,当NM时,如何用一次最少点数的DFT得到该频谱采样?答:先对原序列x(n)以N为周期进行周期延拓后取主值区序列,()[()]()NNixnxniNRn再计算N点DFT则得到N点频域采样:2()DFT[()]=(),0,1,2,,1jNNNkNXkxnXekN五、总结与心得体会通过此次实验,对时域采样和频域采样的理论、定理的理解更加深入。采样是模/数中最重要的一步,采样方法的正确与否,关系到信号处理过程的成功与否。所以,无论是在时域还是频域,对信号采样必须仔细考虑采样的参数:采样频谱、采样周期、采样点数。对一个域进行采样,必将引起另一个域的周期延拓,所以,我们要做,就是选取好采样的参数,避免另一个域周期延拓时发生混叠,否则,我们采样所得的数据肯定丢失一部分原信号的信息,我们便无法对原信号对原信号进行恢复和正确分析。此次实验所遇到的问题:主要是时域非周期对应频域连续,频域周期对应着时域离散(DFT隐含周期性),频域非周期对应时域连续。对时域与频域的关系还没彻底弄懂,stem和plot绘图函数有时会用错。有些程序里面缺少“;”,导致少了一个结果图,通过检查并修改程序,解决了问题。总得来说,实验还是比较圆满的。实验的心得体会见下:在此次试验中,温习了关于MATLAB软件的操作及应用,基本使用方法和它的运行环境。又进一步地通过实验加深了对MATLAB软件的了解,体会到了MATLAB具有完备的图形处理功能,实现计算结果和编程的可视化等功能。通过做实验的过程以及实验分析的结果,熟悉并了解了Ifft函数和fft函数的用法。通过这次的实验。极大地提升了自己对于程序编辑的熟练度,增加了对于书本里面知识点的应用,更深一层的加深了对MATLAB软件的使用。这对自己以后的实验积累了丰富的经验。六、附件:MATLAB原程序清单2.1用fft函数求模拟信号的幅频特性Tp=64/1000;%观察时间Tp=64毫秒%产生M长采样序列x(n)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);stem(xnt);%调用自编绘图函数stem绘制序列图boxon;title('(a)Fs=1000Hz');k=0:M-1;fk=k/Tp;subplot(3,2,2);stem(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完全相同。Tp=64/1000;%观察时间Tp=64毫秒%产生M长采样序列x(n)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);stem(xnt);%调用自编绘图函数stem绘制序列图boxon;title('(b)Fs=300Hz');k=0:M-1;fk=k/Tp;subplot(3,2,4);stem(fk,abs(Xk));title('(b)T*FT[xa(nT)],Fs=300Hz');xlabel('f(Hz)');ylabel('幅度');axis([0,Fs,0,1.2*max(abs(Xk))]);Tp=64/1000;%观察时间Tp=64毫秒%产生M长采样序列x(n)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);stem(xnt);%调用自编绘图函数stem绘制序列图boxon;title('(c)Fs=200Hz');k=0:M-1;fk=k/Tp;subplot(3,2,6);stem(fk,abs(Xk));title('(c)T*FT[xa(nT)],Fs=200Hz');xlabel('f(Hz)');ylabel('幅度');axis([0,Fs,0,1.2*max(abs(Xk))]);2.2调用fft函数进行频率采样及Ifft函数绘波形图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)的TFX32k=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);boxontitle('(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));boxontitle('(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);boxontitle('(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(X32