北京理工大学计算机大作业二,数字信号实验报告二,北京理工大学,实验报告.docx...

本文详细介绍了如何利用FFT计算线性卷积,对比了重叠相加法和重叠保留法,并通过实例展示了不同序列长度下两种方法的运行时间。重点探讨了快速卷积在计算效率上的优势。通过MATLAB实验,验证了FFT在大规模数据处理中的优越性能。
摘要由CSDN通过智能技术生成

数字信号实验报告二,北京理工大学,实验报告

实验三利用FFT计算线性卷积一、实验目的1.掌握利用FFT计算线性卷积的原理及具体实现方法。2.加深理解重叠相加法和重叠保留法。3.考察利用FFT计算线性卷积各种方法的适用范围。二、实验设备与环境计算机、MATLAB软件环境三、实验基础理论1.线性卷积与圆周卷积设为L点序列,为M点序列,和的线性卷积为的长度为L+M-1。和的N点圆周卷积为圆周卷积与线性卷积相等而不产生交叠的必要条件为圆周卷积定理:根据DFT的性质,和的N点圆周卷积的DFT等于它们DFT的乘积2.快速卷积快速卷积算法用圆周卷积实现线性卷积,根据圆周卷积定理利用FFT算法实现圆周卷积。可以将快速卷积的步骤归纳如下:(1)为了使线性卷积可以利用圆周卷积来计算,必须选择;同时为了能使用基2-FFT完成卷积运算,要求。采用补零的办法是和的长度均为N。(2)计算和的N点FFT(3)组成卷积(4)利用IFFT计算IDFT,得到线性卷积3.分段卷积我们考察单位取样响应为的线性系统,输入为,输出为,则当输入序列时再开始进行卷积,会使输出相对输入有较大的延时,再者如果序列太长,需要大量的存储单元。为此,我们把,分别求出每段的卷积,合在一起其到最后的总输出。这种方法称为分段卷积。分段卷积可细分为重叠相加法和重叠保留法。重叠保留法:设的长度为,的长度为M。我们把序列分成多段N点序列,每段与前一段重叠M-1个样本。由于第一段没有前一段保留信号,为了修正,我们在第一个输入段前面填充M-1个零。计算每一段的圆周卷积,则其每段卷积结果的前M-1个样本不等于线性卷积值,不是正确的样本值。所以我们将每段卷积结果的前M-1个样本舍去,只保留后面的N-M+1个正确输出样本,把这些输出样本合起来得到总的输出。利用FFT实现重叠保留法的步骤如下:(1)在前面填充M-1个零,扩大以后的序列为(2)将分为若干N点子段,设L=N-M+1为每一段的有效数据长度,则第i段〖(3)计算每一段与的N点圆周卷积,利用FFT计算圆周卷积:(4)舍去每一段卷积结果的前M-1个样本,连接剩下样本,得到卷积结果。重叠相加法:设长度为M,将信号分解成长为L的子段,建议L选择与M数量级相同。以表示每段信号,则每一段卷积的长度为L+M-1,所以在做求和时,相邻两段序列有M-1个样本重叠,即前一段的最后M-1个样本和下一段的前M-1个序列重叠,这个重叠部分相加,再与不重叠部分共同组成输出。利用FFT实现重叠保留法的步骤如下:(1)将分为若干L点子段。(2)计算每一段与的卷积,根据快速卷积算法利用FFT计算卷积。(3)将各段(包括重叠部分)相加,得到输出4.可能用到的MATLAB函数实验中FFT运算可采用MATLAB中提供的函数fft来实现。MATLAB提供了函数conv来计算线性卷积,实验中可以将编程计算的结果和conv函数的计算结果相比较,以验证结果的正确性,conv函数用法如下: x和h为要进行卷积运算的两个序列,y为卷积结果统计程序运行时间可以利用MATLAB提供的tic和toc两个命令,具体用法如下:tic……需要运行的程序代码toc即,在需要统计运行时间的程序代码前加上tic命令,之后加上toc命令,此时会在命令窗口中显示该程序的运行时间。四、实验内容假设要计算序列和的线性卷积,完成以下实验内容:1.设L=M,根据线性卷积表达式和快速卷积原理,分别编程实现计算两个序列线性卷积的方法,比较当序列长度分别为8,16,32,64,256,512,1024时,两种方法计算线性卷积所用的时间。实验代码及实验结果:(1)l=m=8线性卷积:tic; *统计程序运行时间l=8;m=8;n=0:l;M=0:m;x=heaviside(n)-heaviside(n-l);h=cos(0.2*pi*M);x=conv(x,h);tocElapsed time is 0.000246 seconds.快速卷积:ticl=8;n=0:l;m=8;M=0:m;x=heaviside(n)-heaviside(n-l);x1=fft(x,16);h=cos(0.2*pi*M);h1=fft(h,16);y1=x1.*h1;y=ifft(y1);tocElapsed time is 0.000226 seconds.结论:0.000226<0.000246快速卷积运行时间较短。(2)l=m=16线性卷积:ticl=16;m=16;n=0:l;M=0:m;x=heaviside(n)-heaviside(n-l);h=cos(0.2*pi*M);x=conv(x,h);tocElapsed time is 0.000249 seconds.快速卷积:ticl=16;n=0:l;m=16;M=0:m;x=heaviside(n)-heavisi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值