频谱分析仪模拟仿真
数字信号处理课程设计
题目:频谱分析仪模拟仿真
专业:电子信息工程
班级:
姓名:
日期:2015-03-26
目录
设计目的------------------------------------------------------------------------1
程序流程------------------------------------------------------------------------2
软件设计------------------------------------------------------------------------3
心得体会------------------------------------------------------------------------4
参考文献------------------------------------------------------------------------5
一、设计目的
1、通过对频谱分析仪的模拟掌握其基本原理和基本功能;
2、学习掌握用计算机输出基波包括:方波、正弦波、余弦波等;
3、掌握倒位序、离散傅里叶变换(DFT)、快速傅里叶变换(FFT)的原理及算法;
4、分别用DFT和FFT分析比较32位方波序列对比,体会快速算法的意义;
5、学会用turbo c编程软件并且对c语言编程算法进行实践,加深理解。
二、软件设计
1、方波8位加DFT抽样
#include
#include
#define N 8
#define PI 3.1415926
int sam[8];
void sample()
{
int i,j;
printf("抽样结果:\n");
for(i=0;i
{
if(i
{
j=1;
sam[i]=j;
printf("sam[%d]=%d ",i,j);
}
if(i>=N/2)
{
j=-1;
sam[i]=j;
printf("sam[%d]=%d ",i,j);
}
}
printf("\n");
}
void DFT()
{
int k,n,a;
float sum1=0,sum2=0;
float xi[N],xj[N],xk[N];
printf("DFT变换结果:\n");
for(k=0;k
{
for(n=0;n
{
xi[n]=sam[n]*cos(-(2*PI/N)*k*n);
sum1+=xi[n];
xj[n]=sam[n]*sin(-(2*PI/N)*k*n);
sum2+=xj[n];
}
xk[k]=sqrt(sum1*sum1+sum2*sum2);
sum1=0;
sum2=0;
}
for(a=0;a
{
printf("X[%d]=%f ",a,xk[a]);
}
printf("\n");
}
void main()
{
sample();
DFT();
}
截图
2、方波32位程序
#include
void main()
{
int i,a,N;
N=32;
for(i=0;i
{
a=1;
printf("%d ",a);
}
for(i=N/2;i
{
A=-1
printf("%d ",a);
}
system("pause");
}
软件截图
2、DFT程序
#include
#include
void main()
{
float t,re=0,im=0,sum,mod,P=3.1415926;
int n,k,N=32,*x;
for(n=0;n
{
x[n]=1;
}
for(n=