您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 数字信号DFT算法实验报告
1数字信号处理实验报告学号:078205130姓名:张贤辉一、实验目的(1)进一步加深DFT算法原理和基本性质的理解(因为FFT只是DFT的一种快速算法,所以FFT的运算结果必然满足DFT的基本性质)(2)熟悉FFT算法原理(3)学习用FFT对连续信号和时域离散信号进行谱分析的方法分析误差及其原因,以便在实际中正确应用FFT二实验原理理解快速FFT算法的原理及推导过程并能熟练使用MATLAB计算快速傅里叶变换,第一题程序b=[1,sqrt(2),1];a=[1,-0.67,0.9];[H,w]=freqz(b,a);magH=abs(H);phaH=angle(H);figure(1);subplot(2,1,1);plot(w/pi,magH);xlabel('频率单位:pi');ylabel('幅度');title('幅度响应');gridon;subplot(2,1,2);plot(w/pi,phaH);xlabel('频率单位:pi');ylabel('相位单位:pi');title('相位响应');gridon2第二题程序fs=1000;t=0:1/fs:0.1;%采集信号长度为0.1秒,时间间隔为1/fs,即采样频率足够高,采样周期足够短就可以逼近原信号。A=444.128;a=50*sqrt(2)*pi;b=a;xa=A*exp(-a*t).*sin(b*t);%近似模拟信号k=0:511;w=2*pi*k/512;Xa=dtft(xa,w);%近似模拟信号频谱figure(2);subplot(3,2,1);plot(t,xa);%画出原始波形axis([0,max(t),min(xa),max(xa)]);title('模拟信号');xlabel('t(s)');ylabel('xa(t)');line([0,max(t)],[0,0]);f=fs*k/512;%模拟频率fsubplot(3,2,2);plot(f,abs(Xa));title('模拟信号的幅度频谱');axis([0,500,0,max(abs(Xa))]);xlabel('f(Hz)');ylabel('|Xa(jf)|');fs1=1000;t1=0:1/fs1:0.1;%采集信号长度为0.1秒x1=A*exp(-a.*t1).*sin(b*t1);%1kHZ采样序列x1(n)X1=dtft(x1,w);%x1(n)的512点dtftsubplot(3,2,3);stem(t1,x1,'.');axis([0,max(t1),min(x1),max(x1)]);title('采样序列x1(n)');3xlabel('n');ylabel('x1(n)');line([0,max(t1)],[0,0]);subplot(3,2,4);plot(w/pi,abs(X1));title('x1(n)的幅度频谱');axis([0,2,0,max(abs(X1))]);xlabel('w/pi');ylabel('|X1(jw)|');fs2=300;t2=0:1/fs2:0.1;%采集信号长度为0.1秒x2=A*exp(-a.*t2).*sin(b*t2);%300HZ采样序列x2(n)X2=dtft(x2,w);%x2(n)的512点dtftsubplot(3,2,5);plot(w/pi,abs(X2));title('x2(n)的幅度频谱');axis([0,2,0,max(abs(X2))]);xlabel('w/pi');ylabel('|X2(jw)|');fs3=200;t3=0:1/fs3:0.1;%采集信号长度为0.1秒x3=A*exp(-a.*t3).*sin(b*t3);%200HZ采样序列x2(n)X3=dtft(x3,w);%x3(n)的512点dtftsubplot(3,2,6);plot(w/pi,abs(X3));title('x3(n)的幅度频谱');axis([0,2,0,max(abs(X3))]);xlabel('w/pi');ylabel('|X3(jw)|');第三题程序function[y,ny]=convm(x,nx,h,nh)nyb=nx(1)+nh(1);nye=nx(length(x))+nh(length(h));ny=[nyb:nye];y=conv(x,h);4x=[11,7,0,-1,4,2];nx=[-2:3];h=[2,3,-5,2,1];nh=[-1:4];[y,ny]=convm(x,nx,h,nh)stem(ny,y);xlabel(‘序列n’);ylabel(输出响应y(n));functionX=dtft(x,w)X=x*exp(-j*[0:(length(x)-1)]'*w);实验总结在实验中,要正确的做出该实验的内容,需要充分理解DFT离散傅里叶变换原理,频率采样定理。了解MATLAB如何调用DFT格式计算傅里叶变换。实验中须要注意DFT算法和卷积算法要保证序列长度是相等的,否则将会报错。5三、上机修改后的程序功能函数:function[xk]=dft(xn,N)n=[0:1:N-1];k=[0:1:N-1];WN=exp(-j.*2.*pi./N);nk=n'*k;WNnk=WN.^nk;xk=xn*WNnk;第一题:n=0:9;N=10;x=[ones(1,6),zeros(1,4)];subplot(221);stem(n,x),xlabel('N=10');ylabel('x(n)');y=dft(x,N);q=n/10;subplot(222);stem(q,abs(y));ylabel('DFTN=8');n=0:19;x=[ones(1,6),zeros(1,14)];subplot(223);stem(n,x);xlabel('N=20');ylabel('x(n)');N=20;q=n/20;y2=dft(x,N);subplot(224);stem(q,abs(y2));xlabel('N=16');ylabel('DFTN=16')第二题:(a)N=8;n=0:7;x=[ones(1,4),zeros(1,4)];subplot(221);stem(n,x);xlabel(‘N=8’);ylabel(‘x(n)’);y=dft(x,N);q=n/8;subplot(222);stem(q,abs(y));ylabel(‘DFTN=8’);n=0:15;x=[ones(1,4),zeros(1,12)];subplot(223);stem(n,x);xlabel(‘N=16’);ylabel(‘x(n)’);N=16;q=n/16;y=dft(x,N);subplot(224);stem(q,abs(y));xlabel(‘N=16’);ylabel(‘DFTN=16’)(b)6n=0:7;N=8;x=cos(pi./4*n);subplot(221);stem(n,x);xlabel('N=8');ylabel('x(n)');y=dft(x,N);q=n/8;subplot(222);stem(q,abs(y));ylabel('DFTN=8');n=0:15;x=cos(pi./4*n);subplot(223);stem(n,x);xlabel('N=16');ylabel('x(n)');N=16;q=n/16;y=dft(x,N);subplot(224);stem(q,abs(y));ylabel('DFTN=16');(c)n=0:7;N=8;x=sin(pi./8*n);subplot(221);stem(n,x);xlabel('N=8');ylabel('x(n)');y=dft(x,N);q=n/8;subplot(222);stem(q,abs(y));ylabel('FFTN=8');n=0:15;x=cos(pi./4*n);subplot(223);stem(n,x);xlabel('N=16');ylabel('x(n)');N=16;q=n/16;y=dft(x,N);subplot(224);stem(q,abs(y));ylabel('FFTN=16');第三题N=128;n=0:N-1;f1=2;f2=2.05;fs=10;x=sin(2*pi*f1*n/fs)+sin(2*pi*f2*n/fs);y=fft(x,N);q=n/N;subplot(311);stem(q,abs(y));gridon;ylabel('DFTN=128');N=512;n=0:N-1;x=[x,zeros(1,384)];f1=2;f2=2.05;fs=10;q=n/N;%x=2*sin(2*pi*f1*n/fs)+sin(2*pi*f2*n/fs);y=fft(x,N);subplot(312);stem(q,abs(y));gridon;ylabel('FFTN=128');N=512;n=0:N-1;f1=2;f2=2.05;fs=10;q=n/N;x=2*sin(2*pi*f1*n/fs)+sin(2*pi*f2*n/fs);y=dft(x,N);7subplot(313);stem(q,abs(y));gridon;ylabel('FFTN=128');四、总结快速傅里叶变换(FFT)是离散傅里叶变换(DFT)的快速算法。它是数字信号处理领域中的一项重大突破。它考虑了计算机和数字硬件实现的约束条件,研究了有利于机器操作的运算结构,使DFT的计算时间缩短了1-2个数量级有效地减少了计算所需的存储容量。我们只有熟练DFT的理论算法才能更好的运用MATLAB来计算。
本文标题:数字信号DFT算法实验报告
链接地址:https://www.777doc.com/doc-3750280 .html