1、1、通过对频谱分析仪的模拟掌握其基本原理和基本功能;2、学习掌握用计算机输出基波包括:方波、正弦波、余弦波等;3、掌握倒位序、离散傅里叶变换(DFT)、快速傅里叶变换(FFT)的原理及算法;4、分别用DFT和FFT分析比较32位方波序列对比,体会快速算法的意义;5、学会用turbo c编程软件并且对c语言编程算法进行实践,加深理解。二、软件设计1、方波8位加DFT抽样#include math.h#define N 8#define PI 3.1415926int sam8;void sample() int i,j; printf(抽样结果:n); for(i=0;iN;i+) if(i=N
2、/2) j=-1;void DFT() int k,n,a; float sum1=0,sum2=0; float xiN,xjN,xkN;DFT变换结果: for(k=0;kk+) for(n=0;nn+) xin=samn*cos(-(2*PI/N)*k*n); sum1+=xin; xjn=samn*sin(-(2*PI/N)*k*n); sum2+=xjn; xkk=sqrt(sum1*sum1+sum2*sum2); sum1=0; sum2=0; for(a=0;aa+) printf(X%d=%f ,a,xka);void main() sample(); DFT();截图2、方
3、波32位程序 int i,a,N; N=32;N/2;a=1;%d ,a);for(i=N/2; A=-1printf(system(pause软件截图2、DFT程序#includefloat t,re=0,im=0,sum,mod,P=3.1415926;int n,k,N=32,*x;for(n=0;xn=1;for(n=N/2;xn=-1;for(k=0; t=(-2*P/N)*n*k; re+=xn*cos(t); im+=xn*sin(t);sum=re*re+im*im;mod=sqrt(sum);x%d=%f,n,k,mod);re=0,im=0;sum=0;mod=0;3、倒位
4、序程序#define N 32int nv2,nm1,i,k,j=0,x100,t;nv2=N/2;nm1=N-1;请输入自然序:for(i=0;scanf(%d,&xi);nm1;j) t=xj; xj=xi; xi=t; k=nv2; while(k=j) j=j-k; k=k/2; j=j+k;输出倒位序:for(j=0;jj+),xj);4、FFT程序struct cmplex float r; float i;struct cmplex ss(struct cmplex a1,struct cmplex a2) struct cmplex c; c.r=a1.r*a2.r-a1.i*
5、a2.i; c.i=a1.r*a2.i+a1.i*a2.r; return(c); int i,k,N=32,nv,nm,j=0,m,le,le0,ip; float pai=3.1415926,tmp,sum,*a; struct cmplex u,w,t,x32; xi.r=1; xi.i=0; for(i=N/2; xi.r=-1; nv=N/2; nm=N-1;nm; if(i t=xj; xj=xi; xi=t; k=nv; j-=k; k=k/2; j+=k; for(m=1;m=5;m+) le=pow(2,m); le0=le/2; u.r=1; u.i=0; tmp=pai/
6、le0; w.r=cos(-tmp); w.i=sin(-tmp); for(j=0;le0; for(i=j;i+=le) ip=i+le0; t=ss(xip,u); xip.r=xi.r-t.r; xip.i=xi.i-t.i; xi.r+=t.r; xi.i+=t.i; u=ss(u,w); sum=xi.r*xi.r+xi.i*xi.i; ai=sqrt(sum);a%d=%fn,i,ai);三、心得体会 该实验巩固了我们上学期所学的数字信号处理和信号与系统知识,通过C语言上机操作仿真信号,不仅能够加深我们对各种信号抽样和变换的认识,也能让我们真真切切体会到计算机仿真系统带给我们学生和技术人员的巨大便利。总而言之,本次DSP仿真为我们以后在信号领域的探索和研究打下了良好的基础。四、参考文献 1、程佩清数字信号处理教程清华大学出版社 2013 第四版 2、王宝祥信号与系统工业大学出版社(修订版) 3、谭浩强C语言程序设计清华大学出版社 2008 第二版