1数字信号处理课程设计报告文档格式.docx
- 文档编号:15715604
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:9
- 大小:260.76KB
1数字信号处理课程设计报告文档格式.docx
《1数字信号处理课程设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《1数字信号处理课程设计报告文档格式.docx(9页珍藏版)》请在冰豆网上搜索。
一.数字信号处理的简介-2-
二.课程设计的目的与要求-2-
三.傅立叶变换的逆变换-2-
四.IFFT的计算方法-3-
五.课程设计代码-4-
六.程序结果-8-
一.数字信号处理的简介
数字信号处理的主要对象是数字信号,且是采用运算的方法达到处理目的,因此,其实现方法不同于模拟信号的实现方法,基本上可以分为两种实现方法,即软件实现方法和硬件实现的方法。
而硬件实现指的是选用合适的DSP芯片,配有适合芯片语言及任务要求的软件,实现某种信号处理功能的一种方法。
数字信号处理的特点1.灵活性2.高精度和高稳定性3.便于大规模集成4.对数字信号可以存储、运算;
系统可以获得高性能指标
二.课程设计的目的与要求
通过本课程设计进一步巩固数字信号处理的基本概念、理论、分析方法和实现方法;
能掌握的基本理论和分析方法方面的知识得到进一步扩展;
能有效地将理论和实际紧密结合;
增强软件编程实现能力和解决实际问题的能力,要求能够熟练地用Matlab语言编写数字信号处理的应用程序。
三.傅立叶变换的逆变换
对一个给定的傅里叶变换,求其相应原函数f(t)的运算,即傅立叶变换的逆变换对向量(或直接对矩阵的行或列)进行离散傅立叶逆变换的函数的调用方法是:
Y=ifft(X,n,dim)
函数对X进行离散傅立叶逆变换。
其中X、n、dim的意义及用法和离散傅立叶变换函数fft完全相同。
举例
A=[3,2,1,1;
-5,1,0,1;
3,2,1,5];
fftA=fft(A)%求A的列向量的傅立叶变换
fftA2=fft(A,4,2)%求A的行向量的傅立叶变换
ifft(fftA)%对矩阵fftA的列向量进行傅立叶逆变换,结果应等于A
ifft(fftA2,4,2)%对矩阵fftA2的行向量进行傅立叶逆变换,其结果应等于A
DX=diff(X)计算向量X的向前差分,DX(i)=X(i+1)-X(i),0<
i<
n。
DX=diff(X,n)计算X的n阶向前差分,diff(X,2)=diff(diff(X))。
DX=diff(A,n,dim)计算矩阵A的n阶差分,dim=1时(缺省状态),按列计算差分,dim=2,按行计算差分。
四.IFFT的计算方法
FFT算法同样可以应用于IDFT的计算,称为快速傅里叶反变换,简写为IFFT。
前述DFT和IDFT公式为
比较上面两式,可以看出,只要把DFT公式中的系数
改为
,并乘以系数1/N,就可用FFT算法来计算IDFT,这就得到了IFFT的算法。
当把时间抽选FFT算法用于IFFT计算时,由于原来输入的时间序列x(n)现在变为频率序列X(k),原来是将x(n)偶奇分的,而现在变成对X(k)进行偶奇分了,因此这种算法改称为频率抽选IFFT算法。
类似地,当把频率抽选FFT算法用于计算IFFT时,应该称为时间抽选IFFT算法。
在IFFT计算中经常把常量1/N分解成M个1/2连乘,即1/N=(1/2)M,并且在M级的迭代运算中,每级的运算都分别乘上一个1/2因子。
图3.29表示的是时间抽选IFFT流程图。
五.课程设计代码
#include<
stdio.h>
math.h>
/*调用系统函数*/
stdlib.h>
/*动态存储*/
time.h>
#defineN1024
typedefstruct/*定义复数类型*/
{
doublereal;
doubleimg;
}
complex;
/*定义结构体类型为复数类型,声明新类型名为complex*/
complexx[N],*W;
/*想x[n]为输入序列,*w为指向complex的数据指针*/
intsize_x=0;
/*输入序列的大小,在本程序中仅限2的次幂*/
doublePI;
/*圆周率*/
/*主函数*/
intmain(){
inti,method,s;
voidfft();
/*快速傅里叶变换*/
voidifft();
/*逆快速傅里叶变换*/
voidinitW();
/*初始化变换核*/
voidchange();
/*变址,将x[n]倒置*/
voidadd(complex,complex,complex*);
/*复数加法*/
voidmul(complex,complex,complex*);
/*复数乘法*/
voidsub(complex,complex,complex*);
/*复数减法*/
voiddivi(complex,complex,complex*);
/*复数除法*/
voidoutput();
/*输出结果*/
voidinput();
/*随机输入时调用*/
typedefstructCOMPLEX//复数结构体
doubleReal;
doubleImag;
}Complex;
voidFFT1D(Complex*pTD,Complex*pFD,unsignedintnGrade);
//一维FFT变换
voidIFFT1D(Complex*pFD,Complex*pTD,unsignedintnGrade);
//一维IFFT变换
voidFFT1D(Complex*pTD,Complex*pFD,unsignedintnGrade)//一维FFT变换
Complex*W,*X1,*X2,*X;
ComplexTempComplex;
unsignedinti,j,k;
unsignedintbfsize,p;
unsignedintnCount=1<
<
nGrade;
doubledAngle;
W=newComplex[nCount>
>
1];
//分配内存空间
X1=newComplex[nCount];
X2=newComplex[nCount];
for(i=0;
i<
(nCount>
1);
i++)//计算加权系数
dAngle=PI*2.0*i/nCount;
W[i].Real=cos(dAngle);
W[i].Imag=-sin(dAngle);
memcpy(X1,pTD,sizeof(Complex)*nCount);
//内存拷贝
for(k=0;
k<
k++)//采用蝶形算法进行快速傅立叶变换
for(j=0;
j<
(unsignedint)(1<
k);
j++)
bfsize=1<
(nGrade-k);
bfsize/2;
i++)
p=j*bfsize;
X2[i+p].Real=X1[i+p].Real+X1[i+p+bfsize/2].Real;
X2[i+p].Imag=X1[i+p].Imag+X1[i+p+bfsize/2].Imag;
TempComplex.Real=X1[i+p].Real-X1[i+p+bfsize/2].Real;
TempComplex.Imag=X1[i+p].Imag-X1[i+p+bfsize/2].Imag;
X2[i+p+bfsize/2].Real=TempComplex.Real*W[i*(1<
k)].Real-TempComplex.Imag*W[i*(1<
k)].Imag;
X2[i+p+bfsize/2].Imag=TempComplex.Real*W[i*(1<
k)].Imag+TempComplex.Imag*W[i*(1<
k)].Real;
X=X1;
X1=X2;
X2=X;
nCount;
p=0;
if(j&
(1<
i))
p+=1<
(nGrade-i-1);
pFD[j].Real=X1[p].Real;
pFD[j].Imag=X1[p].Imag;
delete[]W;
delete[]X1;
delete[]X2;
voidIFFT1D(Complex*pFD,Complex*pTD,unsignedintnGrade)//一维IFFT变换
//计算加权系数
W[i].Imag=sin(dAngle);
memcpy(X1,pFD,sizeof(Complex)*nCount);
//内存拷贝
k)].Real-TempCompl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号 处理 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)